backlight: hx8357: Fix potential NULL pointer dereference
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Sun, 14 Jan 2024 14:39:21 +0000 (16:39 +0200)
committerLee Jones <lee@kernel.org>
Thu, 7 Mar 2024 09:03:28 +0000 (09:03 +0000)
The "im" pins are optional. Add missing check in the hx8357_probe().

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/642e1230-3358-4006-a17f-3f297897ae74@moroto.mountain
Fixes: 7d84a63a39b7 ("backlight: hx8357: Convert to agnostic GPIO API")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Link: https://lore.kernel.org/r/20240114143921.550736-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/video/backlight/hx8357.c

index d7298376cf74ddd89c4804ab297b621538ff15e2..bf18337ff0c2c0e62a1d79093767d6d96fff306d 100644 (file)
@@ -609,11 +609,13 @@ static int hx8357_probe(struct spi_device *spi)
        lcd->im_pins = devm_gpiod_get_array_optional(dev, "im", GPIOD_OUT_LOW);
        if (IS_ERR(lcd->im_pins))
                return dev_err_probe(dev, PTR_ERR(lcd->im_pins), "failed to request im GPIOs\n");
-       if (lcd->im_pins->ndescs < HX8357_NUM_IM_PINS)
-               return dev_err_probe(dev, -EINVAL, "not enough im GPIOs\n");
+       if (lcd->im_pins) {
+               if (lcd->im_pins->ndescs < HX8357_NUM_IM_PINS)
+                       return dev_err_probe(dev, -EINVAL, "not enough im GPIOs\n");
 
-       for (i = 0; i < HX8357_NUM_IM_PINS; i++)
-               gpiod_set_consumer_name(lcd->im_pins->desc[i], "im_pins");
+               for (i = 0; i < HX8357_NUM_IM_PINS; i++)
+                       gpiod_set_consumer_name(lcd->im_pins->desc[i], "im_pins");
+       }
 
        lcdev = devm_lcd_device_register(&spi->dev, "mxsfb", &spi->dev, lcd,
                                        &hx8357_ops);