| From b9b3a41893c3f1be67b5aacfa525969914bea0e9 Mon Sep 17 00:00:00 2001 |
| From: Atilla Filiz <atilla.filiz@essensium.com> |
| Date: Fri, 11 Apr 2014 16:51:23 +0200 |
| Subject: iio:imu:mpu6050: Fixed segfault in Invensens MPU driver due to null dereference |
| |
| From: Atilla Filiz <atilla.filiz@essensium.com> |
| |
| commit b9b3a41893c3f1be67b5aacfa525969914bea0e9 upstream. |
| |
| The driver segfaults when the kernel boots with device tree as the |
| platform data is then not present and the pointer is deferenced without |
| checking it is not null. This patch introduces such a check avoiding the |
| crash. |
| |
| Signed-off-by: Atilla Filiz <atilla.filiz@essensium.com> |
| Signed-off-by: Jonathan Cameron <jic23@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c |
| +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c |
| @@ -660,6 +660,7 @@ static int inv_mpu_probe(struct i2c_clie |
| { |
| struct inv_mpu6050_state *st; |
| struct iio_dev *indio_dev; |
| + struct inv_mpu6050_platform_data *pdata; |
| int result; |
| |
| if (!i2c_check_functionality(client->adapter, |
| @@ -675,8 +676,10 @@ static int inv_mpu_probe(struct i2c_clie |
| } |
| st = iio_priv(indio_dev); |
| st->client = client; |
| - st->plat_data = *(struct inv_mpu6050_platform_data |
| - *)dev_get_platdata(&client->dev); |
| + pdata = (struct inv_mpu6050_platform_data |
| + *)dev_get_platdata(&client->dev); |
| + if (pdata) |
| + st->plat_data = *pdata; |
| /* power is turned on inside check chip type*/ |
| result = inv_check_and_setup_chip(st, id); |
| if (result) |