Unverified Commit 87919e0c authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

regulator: fan53555: Check pdata->slew_rate setting



Current code does not really avoid array access out of bounds,
fix it by add checking for pdata->slew_rate.
If pdata->slew_rate is too big, it's a bug in pdata that needs fix.

Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5db2efbe
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -490,11 +490,13 @@ static int fan53555_regulator_probe(struct i2c_client *client,
	} else {
		/* if no ramp constraint set, get the pdata ramp_delay */
		if (!di->regulator->constraints.ramp_delay) {
			int slew_idx = (pdata->slew_rate & 0x7)
						? pdata->slew_rate : 0;
			if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) {
				dev_err(&client->dev, "Invalid slew_rate\n");
				return -EINVAL;
			}

			di->regulator->constraints.ramp_delay
						= slew_rates[slew_idx];
					= slew_rates[pdata->slew_rate];
		}

		di->vendor = id->driver_data;