Skip to content

Commit c69e139

Browse files
claudiubezneajic23
authored andcommitted
iio: adc: rzg2l_adc: Set driver data before enabling runtime PM
When stress-testing the system by repeatedly unbinding and binding the ADC device in a loop, and the ADC is a supplier for another device (e.g., a thermal hardware block that reads temperature through the ADC), it may happen that the ADC device is runtime-resumed immediately after runtime PM is enabled, triggered by its consumer. At this point, since drvdata is not yet set and the driver's runtime PM callbacks rely on it, a crash can occur. To avoid this, set drvdata just after it was allocated. Fixes: 89ee817 ("iio: adc: rzg2l_adc: Simplify the runtime PM code") Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Link: https://patch.msgid.link/20250810123328.800104-3-claudiu.beznea.uj@bp.renesas.com Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent a3c6eab commit c69e139

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/iio/adc/rzg2l_adc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,8 @@ static int rzg2l_adc_probe(struct platform_device *pdev)
427427
if (!indio_dev)
428428
return -ENOMEM;
429429

430+
platform_set_drvdata(pdev, indio_dev);
431+
430432
adc = iio_priv(indio_dev);
431433

432434
adc->hw_params = device_get_match_data(dev);
@@ -459,8 +461,6 @@ static int rzg2l_adc_probe(struct platform_device *pdev)
459461
if (ret)
460462
return ret;
461463

462-
platform_set_drvdata(pdev, indio_dev);
463-
464464
ret = rzg2l_adc_hw_init(dev, adc);
465465
if (ret)
466466
return dev_err_probe(&pdev->dev, ret,

0 commit comments

Comments
 (0)