| From 06bc1f37470b4b1a6ec9faa4ad53fa2229990b49 Mon Sep 17 00:00:00 2001 |
| From: Kangjie Lu <kjlu@umn.edu> |
| Date: Sat, 16 Mar 2019 17:08:33 -0500 |
| Subject: iio: hmc5843: fix potential NULL pointer dereferences |
| |
| [ Upstream commit 536cc27deade8f1ec3c1beefa60d5fbe0f6fcb28 ] |
| |
| devm_regmap_init_i2c may fail and return NULL. The fix returns |
| the error when it fails. |
| |
| Signed-off-by: Kangjie Lu <kjlu@umn.edu> |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/iio/magnetometer/hmc5843_i2c.c | 7 ++++++- |
| drivers/iio/magnetometer/hmc5843_spi.c | 7 ++++++- |
| 2 files changed, 12 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c b/drivers/iio/magnetometer/hmc5843_i2c.c |
| index 3de7f4426ac40..86abba5827a25 100644 |
| --- a/drivers/iio/magnetometer/hmc5843_i2c.c |
| +++ b/drivers/iio/magnetometer/hmc5843_i2c.c |
| @@ -58,8 +58,13 @@ static const struct regmap_config hmc5843_i2c_regmap_config = { |
| static int hmc5843_i2c_probe(struct i2c_client *cli, |
| const struct i2c_device_id *id) |
| { |
| + struct regmap *regmap = devm_regmap_init_i2c(cli, |
| + &hmc5843_i2c_regmap_config); |
| + if (IS_ERR(regmap)) |
| + return PTR_ERR(regmap); |
| + |
| return hmc5843_common_probe(&cli->dev, |
| - devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config), |
| + regmap, |
| id->driver_data, id->name); |
| } |
| |
| diff --git a/drivers/iio/magnetometer/hmc5843_spi.c b/drivers/iio/magnetometer/hmc5843_spi.c |
| index 535f03a70d630..79b2b707f90e7 100644 |
| --- a/drivers/iio/magnetometer/hmc5843_spi.c |
| +++ b/drivers/iio/magnetometer/hmc5843_spi.c |
| @@ -58,6 +58,7 @@ static const struct regmap_config hmc5843_spi_regmap_config = { |
| static int hmc5843_spi_probe(struct spi_device *spi) |
| { |
| int ret; |
| + struct regmap *regmap; |
| const struct spi_device_id *id = spi_get_device_id(spi); |
| |
| spi->mode = SPI_MODE_3; |
| @@ -67,8 +68,12 @@ static int hmc5843_spi_probe(struct spi_device *spi) |
| if (ret) |
| return ret; |
| |
| + regmap = devm_regmap_init_spi(spi, &hmc5843_spi_regmap_config); |
| + if (IS_ERR(regmap)) |
| + return PTR_ERR(regmap); |
| + |
| return hmc5843_common_probe(&spi->dev, |
| - devm_regmap_init_spi(spi, &hmc5843_spi_regmap_config), |
| + regmap, |
| id->driver_data, id->name); |
| } |
| |
| -- |
| 2.20.1 |
| |