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

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
...@@ -490,11 +490,13 @@ static int fan53555_regulator_probe(struct i2c_client *client, ...@@ -490,11 +490,13 @@ static int fan53555_regulator_probe(struct i2c_client *client,
} else { } else {
/* if no ramp constraint set, get the pdata ramp_delay */ /* if no ramp constraint set, get the pdata ramp_delay */
if (!di->regulator->constraints.ramp_delay) { if (!di->regulator->constraints.ramp_delay) {
int slew_idx = (pdata->slew_rate & 0x7) if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) {
? pdata->slew_rate : 0; dev_err(&client->dev, "Invalid slew_rate\n");
return -EINVAL;
}
di->regulator->constraints.ramp_delay di->regulator->constraints.ramp_delay
= slew_rates[slew_idx]; = slew_rates[pdata->slew_rate];
} }
di->vendor = id->driver_data; di->vendor = id->driver_data;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment