Commit c5e68c4f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'regulator-fix-v6.0-rc4' of...

Merge tag 'regulator-fix-v6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
 "One core fix here improving the error handling on enable failure, plus
  smaller fixes for the pfuze100 drive and the SPMI DT bindings"

* tag 'regulator-fix-v6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: Fix qcom,spmi-regulator schema
  regulator: pfuze100: Fix the global-out-of-bounds access in pfuze100_regulator_probe()
  regulator: core: Clean up on enable failure
parents b1d27aa3 475043fa
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ patternProperties:
    description: List of regulators and its properties
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false

    properties:
      qcom,ocp-max-retries:
@@ -100,8 +101,6 @@ patternProperties:
          SAW controlled gang leader. Will be configured as SAW regulator.
        type: boolean

      unevaluatedProperties: false

required:
  - compatible

+7 −2
Original line number Diff line number Diff line
@@ -2733,13 +2733,18 @@ static int _regulator_do_enable(struct regulator_dev *rdev)
 */
static int _regulator_handle_consumer_enable(struct regulator *regulator)
{
	int ret;
	struct regulator_dev *rdev = regulator->rdev;

	lockdep_assert_held_once(&rdev->mutex.base);

	regulator->enable_count++;
	if (regulator->uA_load && regulator->enable_count == 1)
		return drms_uA_update(rdev);
	if (regulator->uA_load && regulator->enable_count == 1) {
		ret = drms_uA_update(rdev);
		if (ret)
			regulator->enable_count--;
		return ret;
	}

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -766,7 +766,7 @@ static int pfuze100_regulator_probe(struct i2c_client *client,
		((pfuze_chip->chip_id == PFUZE3000) ? "3000" : "3001"))));

	memcpy(pfuze_chip->regulator_descs, pfuze_chip->pfuze_regulators,
		sizeof(pfuze_chip->regulator_descs));
		regulator_num * sizeof(struct pfuze_regulator));

	ret = pfuze_parse_regulators_dt(pfuze_chip);
	if (ret)