wm831x_status_probe() accesses status from chip_pdata before initializing it. Fix it. Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> --- drivers/leds/leds-wm831x-status.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/leds/leds-wm831x-status.c b/drivers/leds/leds-wm831x-status.c index c48b80574f02..5060c83f3b25 100644 --- a/drivers/leds/leds-wm831x-status.c +++ b/drivers/leds/leds-wm831x-status.c @@ -212,7 +212,7 @@ static int wm831x_status_probe(struct platform_device *pdev) struct wm831x_status_pdata pdata; struct wm831x_status *drvdata; struct resource *res; - int id = pdev->id % ARRAY_SIZE(chip_pdata->status); + int id; int ret; res = platform_get_resource(pdev, IORESOURCE_REG, 0); @@ -229,9 +229,10 @@ static int wm831x_status_probe(struct platform_device *pdev) drvdata->wm831x = wm831x; drvdata->reg = res->start; - if (dev_get_platdata(wm831x->dev)) + if (dev_get_platdata(wm831x->dev)) { chip_pdata = dev_get_platdata(wm831x->dev); - else + id = pdev->id % ARRAY_SIZE(chip_pdata->status); + } else chip_pdata = NULL; memset(&pdata, 0, sizeof(pdata)); -- 2.34.1