Unverified Commit 2c7a50be authored by Christian Eggers's avatar Christian Eggers Committed by Mark Brown
Browse files

regulator: check that dummy regulator has been probed before using it



Due to asynchronous driver probing there is a chance that the dummy
regulator hasn't already been probed when first accessing it.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarChristian Eggers <ceggers@arri.de>
Link: https://patch.msgid.link/20250313103051.32430-3-ceggers@arri.de


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8619909b
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -2074,6 +2074,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev)

		if (have_full_constraints()) {
			r = dummy_regulator_rdev;
			if (!r) {
				ret = -EPROBE_DEFER;
				goto out;
			}
			get_device(&r->dev);
		} else {
			dev_err(dev, "Failed to resolve %s-supply for %s\n",
@@ -2091,6 +2095,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev)
			goto out;
		}
		r = dummy_regulator_rdev;
		if (!r) {
			ret = -EPROBE_DEFER;
			goto out;
		}
		get_device(&r->dev);
	}

@@ -2219,8 +2227,10 @@ struct regulator *_regulator_get_common(struct regulator_dev *rdev, struct devic
			 * enabled, even if it isn't hooked up, and just
			 * provide a dummy.
			 */
			dev_warn(dev, "supply %s not found, using dummy regulator\n", id);
			rdev = dummy_regulator_rdev;
			if (!rdev)
				return ERR_PTR(-EPROBE_DEFER);
			dev_warn(dev, "supply %s not found, using dummy regulator\n", id);
			get_device(&rdev->dev);
			break;