]> Git Repo - linux.git/commitdiff
regulator: core: Fix resolve supply lookup issue
authorChiYuan Huang <[email protected]>
Wed, 14 Dec 2022 01:37:11 +0000 (09:37 +0800)
committerMark Brown <[email protected]>
Wed, 14 Dec 2022 13:36:45 +0000 (13:36 +0000)
From Marek's log, the previous change modify the parent of rdev.
https://lore.kernel.org/all/58b92e75-f373-dae7-7031-8abd465bb874@samsung.com/

In 'regulator_resolve_supply', it uses the parent DT node of rdev as the
DT-lookup starting node. But the parent DT node may not exist. This will
cause the NULL supply issue.

This patch modify the parent of rdev back to the device that provides
from 'regulator_config' in 'regulator_register'.

Fixes: 8f3cbcd6b440 ("regulator: core: Use different devices for resource allocation and DT lookup")
Reported-by: Marek Szyprowski <[email protected]>
Tested-by: Marek Szyprowski <[email protected]>
Signed-off-by: ChiYuan Huang <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
drivers/regulator/core.c

index c84e8d78dc7ed2bd0bce68bea22fcfcfa43114e7..35a7785c53f65163b5fdd01e1cb7f2d5a0ea089c 100644 (file)
@@ -5539,7 +5539,7 @@ regulator_register(struct device *dev,
 
        /* register with sysfs */
        rdev->dev.class = &regulator_class;
-       rdev->dev.parent = dev;
+       rdev->dev.parent = config->dev;
        dev_set_name(&rdev->dev, "regulator.%lu",
                    (unsigned long) atomic_inc_return(&regulator_no));
        dev_set_drvdata(&rdev->dev, rdev);
This page took 0.061542 seconds and 4 git commands to generate.