Skip to content

Commit

Permalink
iio: imu: mpu6050: Fix name/chip_id when using ACPI
Browse files Browse the repository at this point in the history
When using ACPI, id is NULL and the current code automatically
defaults name to NULL and chip id to 0. We should instead use
the data provided in the ACPI device table.

Fixes: c816d9e ("iio: imu: mpu6050: fix possible NULL dereferences")
Signed-off-by: Daniel Baluta <daniel.baluta@intel.com>
Reviewed-By: Matt Ranostay <matt.ranostay@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
  • Loading branch information
Daniel Baluta authored and Jonathan Cameron committed May 4, 2016
1 parent 140afdd commit 393dbe4
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,19 @@ static int inv_mpu6050_deselect_bypass(struct i2c_adapter *adap,
return 0;
}

static const char *inv_mpu_match_acpi_device(struct device *dev, int *chip_id)
{
const struct acpi_device_id *id;

id = acpi_match_device(dev->driver->acpi_match_table, dev);
if (!id)
return NULL;

*chip_id = (int)id->driver_data;

return dev_name(dev);
}

/**
* inv_mpu_probe() - probe function.
* @client: i2c client.
Expand All @@ -115,15 +128,25 @@ static int inv_mpu_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct inv_mpu6050_state *st;
int result;
const char *name = id ? id->name : NULL;
const int chip_type = id ? id->driver_data : 0;
int result, chip_type;
struct regmap *regmap;
const char *name;

if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_I2C_BLOCK))
return -EOPNOTSUPP;

if (id) {
chip_type = (int)id->driver_data;
name = id->name;
} else if (ACPI_HANDLE(&client->dev)) {
name = inv_mpu_match_acpi_device(&client->dev, &chip_type);
if (!name)
return -ENODEV;
} else {
return -ENOSYS;
}

regmap = devm_regmap_init_i2c(client, &inv_mpu_regmap_config);
if (IS_ERR(regmap)) {
dev_err(&client->dev, "Failed to register i2c regmap %d\n",
Expand Down

0 comments on commit 393dbe4

Please sign in to comment.