struct v4l2_ctrl *ctrl)
 {
        struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
+       struct led_classdev *led_cdev;
        enum led_brightness brightness;
 
        if (has_flash_op(v4l2_flash, intensity_to_led_brightness))
                if (ctrls[LED_MODE]->val != V4L2_FLASH_LED_MODE_TORCH)
                        return;
 
-               led_set_brightness_sync(&v4l2_flash->fled_cdev->led_cdev,
-                                       brightness);
+               if (WARN_ON_ONCE(!v4l2_flash->fled_cdev))
+                       return;
+
+               led_cdev = &v4l2_flash->fled_cdev->led_cdev;
        } else {
-               led_set_brightness_sync(v4l2_flash->iled_cdev,
-                                       brightness);
+               if (WARN_ON_ONCE(!v4l2_flash->iled_cdev))
+                       return;
+
+               led_cdev = v4l2_flash->iled_cdev;
        }
+
+       led_set_brightness_sync(led_cdev, brightness);
 }
 
 static int v4l2_flash_update_led_brightness(struct v4l2_flash *v4l2_flash,
                 */
                if (ctrls[LED_MODE]->val != V4L2_FLASH_LED_MODE_TORCH)
                        return 0;
+
+               if (WARN_ON_ONCE(!v4l2_flash->fled_cdev))
+                       return -EINVAL;
+
                led_cdev = &v4l2_flash->fled_cdev->led_cdev;
        } else {
+               if (WARN_ON_ONCE(!v4l2_flash->iled_cdev))
+                       return -EINVAL;
+
                led_cdev = v4l2_flash->iled_cdev;
        }
 
        case V4L2_CID_FLASH_TORCH_INTENSITY:
        case V4L2_CID_FLASH_INDICATOR_INTENSITY:
                return v4l2_flash_update_led_brightness(v4l2_flash, c);
+       }
+
+       if (!fled_cdev)
+               return -EINVAL;
+
+       switch (c->id) {
        case V4L2_CID_FLASH_INTENSITY:
                ret = led_update_flash_brightness(fled_cdev);
                if (ret < 0)
 {
        struct v4l2_flash *v4l2_flash = v4l2_ctrl_to_v4l2_flash(c);
        struct led_classdev_flash *fled_cdev = v4l2_flash->fled_cdev;
-       struct led_classdev *led_cdev = fled_cdev ? &fled_cdev->led_cdev : NULL;
+       struct led_classdev *led_cdev;
        struct v4l2_ctrl **ctrls = v4l2_flash->ctrls;
        bool external_strobe;
        int ret = 0;
 
+       switch (c->id) {
+       case V4L2_CID_FLASH_TORCH_INTENSITY:
+       case V4L2_CID_FLASH_INDICATOR_INTENSITY:
+               v4l2_flash_set_led_brightness(v4l2_flash, c);
+               return 0;
+       }
+
+       if (!fled_cdev)
+               return -EINVAL;
+
+       led_cdev = &fled_cdev->led_cdev;
+
        switch (c->id) {
        case V4L2_CID_FLASH_LED_MODE:
                switch (c->val) {
                 * microamperes for flash intensity units.
                 */
                return led_set_flash_brightness(fled_cdev, c->val);
-       case V4L2_CID_FLASH_TORCH_INTENSITY:
-       case V4L2_CID_FLASH_INDICATOR_INTENSITY:
-               v4l2_flash_set_led_brightness(v4l2_flash, c);
-               return 0;
        }
 
        return -EINVAL;
                                                ctrls[INDICATOR_INTENSITY]);
 
        if (ctrls[FLASH_TIMEOUT]) {
+               if (WARN_ON_ONCE(!fled_cdev))
+                       return -EINVAL;
+
                ret = led_set_flash_timeout(fled_cdev,
                                        ctrls[FLASH_TIMEOUT]->val);
                if (ret < 0)
        }
 
        if (ctrls[FLASH_INTENSITY]) {
+               if (WARN_ON_ONCE(!fled_cdev))
+                       return -EINVAL;
+
                ret = led_set_flash_brightness(fled_cdev,
                                        ctrls[FLASH_INTENSITY]->val);
                if (ret < 0)