]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
led: gpio: Fix possible ZERO_SIZE_PTR pointer dereferencing error.
authorXiubo Li <Li.Xiubo@freescale.com>
Sun, 28 Sep 2014 08:57:15 +0000 (01:57 -0700)
committerBryan Wu <cooloney@gmail.com>
Mon, 29 Sep 2014 17:21:01 +0000 (10:21 -0700)
Since we cannot make sure the 'pdata->num_leds' will always be none
zero here, and then if it equals to zero, the kmemdup() will return
ZERO_SIZE_PTR, which equals to ((void *)16).

So this patch fix this with just doing the zero check before calling
kmemdup().

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
drivers/leds/leds-gpio-register.c

index fbd89344bec45cb5280ca1245f333639c1608e4e..75717ba68ae0b7a491995aaacef8c7b778c71aea 100644 (file)
@@ -28,6 +28,9 @@ struct platform_device *__init gpio_led_register_device(
        struct platform_device *ret;
        struct gpio_led_platform_data _pdata = *pdata;
 
+       if (!pdata->num_leds)
+               return ERR_PTR(-EINVAL);
+
        _pdata.leds = kmemdup(pdata->leds,
                        pdata->num_leds * sizeof(*pdata->leds), GFP_KERNEL);
        if (!_pdata.leds)