Re: [PATCH v2] leds: max8997: Don't error if there is no pdata

From: Paul Cercueil
Date: Fri Oct 21 2022 - 09:20:24 EST




Le ven. 21 oct. 2022 à 15:11:45 +0200, Pavel Machek <pavel@xxxxxx> a écrit :
On Thu 2022-10-20 12:44:42, Paul Cercueil wrote:
The driver works just fine if no platform data is supplied.

Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>

Does it? Bad Paul, bad Andy.

Yes, it does.

+++ b/drivers/leds/leds-max8997.c
@@ -238,11 +238,6 @@ static int max8997_led_probe(struct platform_device *pdev)
char name[20];
int ret = 0;

- if (pdata == NULL) {
- dev_err(&pdev->dev, "no platform data\n");
- return -ENODEV;
- }
-
led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
if (led == NULL)
return -ENOMEM;
@@ -258,7 +253,7 @@ static int max8997_led_probe(struct platform_device *pdev)
led->iodev = iodev;

/* initialize mode and brightness according to platform_data */
- if (pdata->led_pdata) {
+ if (pdata && pdata->led_pdata) {
u8 mode = 0, brightness = 0;

mode = pdata->led_pdata->mode[led->id];

I see pdata being dereferenced here.

Oh really. Look again.

-Paul