forked from Minki/linux
regulator: tps62360: Fix crash in i2c_driver .probe
Commit "i2c: core: make it possible to match a pure device tree driver" changed semantics of the i2c probing for device tree devices. Device tree probed devices now get a NULL i2c_device_id pointer. This caused kernel panics due to NULL dereference. Tested-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
7d13205581
commit
0a62d03b48
@ -351,7 +351,6 @@ static int tps62360_probe(struct i2c_client *client,
|
||||
int chip_id;
|
||||
|
||||
pdata = client->dev.platform_data;
|
||||
chip_id = id->driver_data;
|
||||
|
||||
if (client->dev.of_node) {
|
||||
const struct of_device_id *match;
|
||||
@ -364,6 +363,11 @@ static int tps62360_probe(struct i2c_client *client,
|
||||
chip_id = (int)match->data;
|
||||
if (!pdata)
|
||||
pdata = of_get_tps62360_platform_data(&client->dev);
|
||||
} else if (id) {
|
||||
chip_id = id->driver_data;
|
||||
} else {
|
||||
dev_err(&client->dev, "No device tree match or id table match found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!pdata) {
|
||||
@ -402,7 +406,7 @@ static int tps62360_probe(struct i2c_client *client,
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
tps->desc.name = id->name;
|
||||
tps->desc.name = client->name;
|
||||
tps->desc.id = 0;
|
||||
tps->desc.ops = &tps62360_dcdc_ops;
|
||||
tps->desc.type = REGULATOR_VOLTAGE;
|
||||
|
Loading…
Reference in New Issue
Block a user