media: led-class-flash: better handle NULL flash struct
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 1 Nov 2017 21:05:40 +0000 (17:05 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 11 Dec 2017 18:17:22 +0000 (13:17 -0500)
The logic at V4L2 led core assumes that the flash struct
can be null. However, it doesn't check for null while
trying to set, causing some smatch  to warn:

drivers/media/v4l2-core/v4l2-flash-led-class.c:210 v4l2_flash_s_ctrl() error: we previously assumed 'fled_cdev' could be null (see line 200)

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
include/linux/led-class-flash.h

index e97966d1fb8daa30a41dc57c5bdcb6d2d398476c..700efaa9e11543f2256d339b1b65d7c596c3bd67 100644 (file)
@@ -121,6 +121,8 @@ extern void led_classdev_flash_unregister(struct led_classdev_flash *fled_cdev);
 static inline int led_set_flash_strobe(struct led_classdev_flash *fled_cdev,
                                        bool state)
 {
+       if (!fled_cdev)
+               return -EINVAL;
        return fled_cdev->ops->strobe_set(fled_cdev, state);
 }
 
@@ -136,6 +138,8 @@ static inline int led_set_flash_strobe(struct led_classdev_flash *fled_cdev,
 static inline int led_get_flash_strobe(struct led_classdev_flash *fled_cdev,
                                        bool *state)
 {
+       if (!fled_cdev)
+               return -EINVAL;
        if (fled_cdev->ops->strobe_get)
                return fled_cdev->ops->strobe_get(fled_cdev, state);