]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
leds: flash: leds-qcom-flash: Test the correct variable in init
authorDan Carpenter <dan.carpenter@linaro.org>
Thu, 4 Jul 2024 15:19:32 +0000 (10:19 -0500)
committerLee Jones <lee@kernel.org>
Thu, 11 Jul 2024 11:46:33 +0000 (12:46 +0100)
This code was passing the incorrect pointer to PTR_ERR_OR_ZERO() so it
always returned success.  It should have been checking the array element
instead of the array itself.

Fixes: 96a2e242a5dc ("leds: flash: Add driver to support flash LED module in QCOM PMICs")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/ZoWJS_epjIMCYITg@stanley.mountain
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/leds/flash/leds-qcom-flash.c

index 7c99a303917163ab3ed08b408e224fc46ae3efe2..bf70bf6fb0d5939d88bbce4c0b2fa531c78e5542 100644 (file)
@@ -505,6 +505,7 @@ qcom_flash_v4l2_init(struct device *dev, struct qcom_flash_led *led, struct fwno
        struct qcom_flash_data *flash_data = led->flash_data;
        struct v4l2_flash_config v4l2_cfg = { 0 };
        struct led_flash_setting *intensity = &v4l2_cfg.intensity;
+       struct v4l2_flash *v4l2_flash;
 
        if (!(led->flash.led_cdev.flags & LED_DEV_CAP_FLASH))
                return 0;
@@ -523,9 +524,12 @@ qcom_flash_v4l2_init(struct device *dev, struct qcom_flash_led *led, struct fwno
                                LED_FAULT_OVER_TEMPERATURE |
                                LED_FAULT_TIMEOUT;
 
-       flash_data->v4l2_flash[flash_data->leds_count] =
-               v4l2_flash_init(dev, fwnode, &led->flash, &qcom_v4l2_flash_ops, &v4l2_cfg);
-       return PTR_ERR_OR_ZERO(flash_data->v4l2_flash);
+       v4l2_flash = v4l2_flash_init(dev, fwnode, &led->flash, &qcom_v4l2_flash_ops, &v4l2_cfg);
+       if (IS_ERR(v4l2_flash))
+               return PTR_ERR(v4l2_flash);
+
+       flash_data->v4l2_flash[flash_data->leds_count] = v4l2_flash;
+       return 0;
 }
 # else
 static int