diff mbox series

hmc5843_i2c.c: fix missing return value check of devm_regmap_init_i2c()

Message ID 20180819021641.3068-1-jasonwood2031@gmail.com (mailing list archive)
State New, archived
Headers show
Series hmc5843_i2c.c: fix missing return value check of devm_regmap_init_i2c() | expand

Commit Message

Jiecheng Wu Aug. 19, 2018, 2:16 a.m. UTC
Function hmc5843_i2c_probe() defined in
 drivers/iio/magnetometer/hmc5843_i2c.c calls devm_regmap_init_i2c()
 to initialise managed register map. As the return value of
 devm_regmap_init_i2c() will be an ERR_PTR() on error, the return
 value must be checked against NULL.
---
 drivers/iio/magnetometer/hmc5843_i2c.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Himanshu Jha Aug. 19, 2018, 8:51 a.m. UTC | #1
On Sun, Aug 19, 2018 at 10:16:41AM +0800, Jiecheng Wu wrote:
> Function hmc5843_i2c_probe() defined in
>  drivers/iio/magnetometer/hmc5843_i2c.c calls devm_regmap_init_i2c()
>  to initialise managed register map. As the return value of
>  devm_regmap_init_i2c() will be an ERR_PTR() on error, the return
>  value must be checked against NULL.

Please take a careful look again at what points I suggested
in a previous patch you sent.

Take a look at a sample patch:
https://lore.kernel.org/lkml/20180531112107.13778-1-hdegoede@redhat.com/

* Signed-off-by:
* Bugzilla link:
* Send to relevant maintainers:
himanshu@himanshu-Vostro-3559:~/linux-next$ ./scripts/get_maintainer.pl ~/Downloads/hmc5843_i2c.c-fix-missing-return-value-check-of-devm_regmap_init_i2c.patch

	Jonathan Cameron <jic23@kernel.org> (maintainer:IIO SUBSYSTEM AND DRIVERS)
	Hartmut Knaack <knaack.h@gmx.de> (reviewer:IIO SUBSYSTEM AND DRIVERS)
	Lars-Peter Clausen <lars@metafoo.de> (reviewer:IIO SUBSYSTEM AND DRIVERS)
	Peter Meerwald-Stadler <pmeerw@pmeerw.net> (reviewer:IIO SUBSYSTEM AND DRIVERS)
	linux-iio@vger.kernel.org (open list:IIO SUBSYSTEM AND DRIVERS)
	linux-kernel@vger.kernel.org (open list)
* cc stable
* Fixes tag: -- would be helpful
* correct version numbering with changelog below the '---' (v1->v2->3 ...)

All these are documented here:
https://www.kernel.org/doc/html/latest/process/submitting-patches.html

> ---
>  drivers/iio/magnetometer/hmc5843_i2c.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c b/drivers/iio/magnetometer/hmc5843_i2c.c
> index 3de7f44..4911cf8 100644
> --- a/drivers/iio/magnetometer/hmc5843_i2c.c
> +++ b/drivers/iio/magnetometer/hmc5843_i2c.c
> @@ -14,6 +14,7 @@
>  #include <linux/regmap.h>
>  #include <linux/iio/iio.h>
>  #include <linux/iio/triggered_buffer.h>
> +#include <linux/device.h>

This include is not required since #include <linux/iio/iio.h>
already includes it.
Jonathan Cameron Aug. 19, 2018, 11:12 a.m. UTC | #2
On Sun, 19 Aug 2018 10:16:41 +0800
Jiecheng Wu <jasonwood2031@gmail.com> wrote:

> Function hmc5843_i2c_probe() defined in
>  drivers/iio/magnetometer/hmc5843_i2c.c calls devm_regmap_init_i2c()
>  to initialise managed register map. As the return value of
>  devm_regmap_init_i2c() will be an ERR_PTR() on error, the return
>  value must be checked against NULL.

This text isn't accurate.  Checking IS_ERR is definitely not checking
against NULL.

+ the issue with missing signoff etc that has already been raised.

Jonathan

> ---
>  drivers/iio/magnetometer/hmc5843_i2c.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c b/drivers/iio/magnetometer/hmc5843_i2c.c
> index 3de7f44..4911cf8 100644
> --- a/drivers/iio/magnetometer/hmc5843_i2c.c
> +++ b/drivers/iio/magnetometer/hmc5843_i2c.c
> @@ -14,6 +14,7 @@
>  #include <linux/regmap.h>
>  #include <linux/iio/iio.h>
>  #include <linux/iio/triggered_buffer.h>
> +#include <linux/device.h>
>  
>  #include "hmc5843.h"
>  
> @@ -58,8 +59,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)
>  {
> -	return hmc5843_common_probe(&cli->dev,
> -			devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config),
> +	struct regmap *regmap;
> +	regmap = devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config);
> +	if (IS_ERR(regmap)) {
> +		dev_err(&cli->dev, "Failed to initialize i2c regmap\n");
> +		return PTR_ERR(regmap);
> +	}
> +	return hmc5843_common_probe(&cli->dev, regmap,
>  			id->driver_data, id->name);
>  }
>
diff mbox series

Patch

diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c b/drivers/iio/magnetometer/hmc5843_i2c.c
index 3de7f44..4911cf8 100644
--- a/drivers/iio/magnetometer/hmc5843_i2c.c
+++ b/drivers/iio/magnetometer/hmc5843_i2c.c
@@ -14,6 +14,7 @@ 
 #include <linux/regmap.h>
 #include <linux/iio/iio.h>
 #include <linux/iio/triggered_buffer.h>
+#include <linux/device.h>
 
 #include "hmc5843.h"
 
@@ -58,8 +59,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)
 {
-	return hmc5843_common_probe(&cli->dev,
-			devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config),
+	struct regmap *regmap;
+	regmap = devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config);
+	if (IS_ERR(regmap)) {
+		dev_err(&cli->dev, "Failed to initialize i2c regmap\n");
+		return PTR_ERR(regmap);
+	}
+	return hmc5843_common_probe(&cli->dev, regmap,
 			id->driver_data, id->name);
 }