clk: samsung: Suppress unbinding to prevent theoretical attacks
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Tue, 17 May 2016 07:26:14 +0000 (09:26 +0200)
committerSylwester Nawrocki <s.nawrocki@samsung.com>
Thu, 2 Jun 2016 09:18:18 +0000 (11:18 +0200)
Although unbinding a driver requires root privileges but it still might
be used theoretically in certain attacks (by triggering NULL pointer
exception or memory corruption if driver does not provide proper remove
callbacks or core does not handle it).

Samsung clock drivers are essential for system operation so their
removal is not expected. More over, the Exynos3250 ISP clock driver does
not implement remove() driver callback and it is not buildable as
modules.

Suppress the unbind interface for Exynos3250 ISP and S3C2410 DCLK clock
drivers.

Suggested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
drivers/clk/samsung/clk-exynos3250.c
drivers/clk/samsung/clk-s3c2410-dclk.c

index b2513959252dd50b7fefe2c2c70db4209bb6ab2b..1b81e283f60589c900c5bfc6370a125d8c8c845d 100644 (file)
@@ -1087,6 +1087,7 @@ static const struct of_device_id exynos3250_cmu_isp_of_match[] __initconst = {
 static struct platform_driver exynos3250_cmu_isp_driver __initdata = {
        .driver = {
                .name = "exynos3250-cmu-isp",
+               .suppress_bind_attrs = true,
                .of_match_table = exynos3250_cmu_isp_of_match,
        },
 };
index ec6fb14d951c728044e477265639fe18881da413..ae9a595c72d0e3489036b93aba3acae2c934a9e9 100644 (file)
@@ -428,8 +428,9 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_dclk_driver_ids);
 
 static struct platform_driver s3c24xx_dclk_driver = {
        .driver = {
-               .name           = "s3c24xx-dclk",
-               .pm             = &s3c24xx_dclk_pm_ops,
+               .name                   = "s3c24xx-dclk",
+               .pm                     = &s3c24xx_dclk_pm_ops,
+               .suppress_bind_attrs    = true,
        },
        .probe = s3c24xx_dclk_probe,
        .remove = s3c24xx_dclk_remove,