The devm_gpiod_get_optional() function may return an ERR_PTR in case of
genuine GPIO acquisition errors, not just NULL which indicates the
legitimate absence of an optional GPIO.

Add an IS_ERR() check after the call in sky81452_bl_parse_dt(). On
error, return the error code to ensure proper failure handling rather
than proceeding with invalid pointers.

Fixes: e1915eec54a6 ("backlight: sky81452: Convert to GPIO descriptors")
Signed-off-by: Chen Ni <[email protected]>
---
 drivers/video/backlight/sky81452-backlight.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/video/backlight/sky81452-backlight.c 
b/drivers/video/backlight/sky81452-backlight.c
index 2749231f0385..e3e5306fab84 100644
--- a/drivers/video/backlight/sky81452-backlight.c
+++ b/drivers/video/backlight/sky81452-backlight.c
@@ -202,6 +202,10 @@ static struct sky81452_bl_platform_data 
*sky81452_bl_parse_dt(
        pdata->dpwm_mode = of_property_read_bool(np, "skyworks,dpwm-mode");
        pdata->phase_shift = of_property_read_bool(np, "skyworks,phase-shift");
        pdata->gpiod_enable = devm_gpiod_get_optional(dev, NULL, 
GPIOD_OUT_HIGH);
+       if (IS_ERR(pdata->gpiod_enable)) {
+               dev_err(dev, "failed to get gpio\n");
+               return ERR_CAST(pdata->gpiod_enable);
+       }
 
        ret = of_property_count_u32_elems(np, "led-sources");
        if (ret < 0) {
-- 
2.25.1

Reply via email to