Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1737964 > unrolled thread

[PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'

Started byChristophe JAILLET <christophe.jaillet@wanadoo.fr>
First post2017-09-23 08:10 +0200
Last post2017-09-24 14:00 +0200
Articles 6 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()' Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2017-09-23 08:10 +0200
    [PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()' Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2017-09-23 08:10 +0200
      Re: [PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in  the error handling path of 'twl4030_madc_probe()' Jonathan Cameron <jic23@kernel.org> - 2017-09-24 14:10 +0200
    [PATCH 3/3] iio: adc: twl4030: Return an error if we can not enable the vusb3v1 regulator in 'twl4030_madc_probe()' Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2017-09-23 08:10 +0200
      Re: [PATCH 3/3] iio: adc: twl4030: Return an error if we can not  enable the vusb3v1 regulator in 'twl4030_madc_probe()' Jonathan Cameron <jic23@kernel.org> - 2017-09-24 14:10 +0200
    Re: [PATCH 1/3] iio: adc: twl4030: Fix an error handling path in  'twl4030_madc_probe()' Jonathan Cameron <jic23@kernel.org> - 2017-09-24 14:00 +0200

#1737964 — [PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'

FromChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Date2017-09-23 08:10 +0200
Subject[PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'
Message-ID<usLNv-7Vv-1@gated-at.bofh.it>
If 'devm_regulator_get()' fails, we should go through the existing error
handling path instead of returning directly, as done is all the other
error handling paths in this function.

Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/iio/adc/twl4030-madc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
index 1edd99f0c5e5..80ab2ed70b85 100644
--- a/drivers/iio/adc/twl4030-madc.c
+++ b/drivers/iio/adc/twl4030-madc.c
@@ -887,8 +887,10 @@ static int twl4030_madc_probe(struct platform_device *pdev)
 
 	/* Enable 3v1 bias regulator for MADC[3:6] */
 	madc->usb3v1 = devm_regulator_get(madc->dev, "vusb3v1");
-	if (IS_ERR(madc->usb3v1))
-		return -ENODEV;
+	if (IS_ERR(madc->usb3v1)) {
+		ret = -ENODEV;
+		goto err_i2c;
+	}
 
 	ret = regulator_enable(madc->usb3v1);
 	if (ret)
-- 
2.11.0

[toc] | [next] | [standalone]


#1737968 — [PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'

FromChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Date2017-09-23 08:10 +0200
Subject[PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'
Message-ID<usLNv-7Vv-13@gated-at.bofh.it>
In reply to#1737964
Commit 7cc97d77ee8a has introduced a call to 'regulator_disable()' in the
.remove function.
So we should also have such a call in the .probe function in case of
error after a successful 'regulator_enable()' call.

Add a new label for that and use it.

Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/iio/adc/twl4030-madc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
index 80ab2ed70b85..32db23d9a483 100644
--- a/drivers/iio/adc/twl4030-madc.c
+++ b/drivers/iio/adc/twl4030-madc.c
@@ -899,11 +899,13 @@ static int twl4030_madc_probe(struct platform_device *pdev)
 	ret = iio_device_register(iio_dev);
 	if (ret) {
 		dev_err(&pdev->dev, "could not register iio device\n");
-		goto err_i2c;
+		goto err_usb3v1;
 	}
 
 	return 0;
 
+err_usb3v1:
+	regulator_disable(madc->usb3v1);
 err_i2c:
 	twl4030_madc_set_current_generator(madc, 0, 0);
 err_current_generator:
-- 
2.11.0

[toc] | [prev] | [next] | [standalone]


#1738170 — Re: [PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'

FromJonathan Cameron <jic23@kernel.org>
Date2017-09-24 14:10 +0200
SubjectRe: [PATCH 2/3] iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'
Message-ID<utdTr-5b-5@gated-at.bofh.it>
In reply to#1737968
On Sat, 23 Sep 2017 08:06:19 +0200
Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:

> Commit 7cc97d77ee8a has introduced a call to 'regulator_disable()' in the
> .remove function.
> So we should also have such a call in the .probe function in case of
> error after a successful 'regulator_enable()' call.
> 
> Add a new label for that and use it.
> 
> Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Applied to the fixes-togreg-post-rc1 branch of iio.git and marked
for stable.

Thanks,

Jonathan
> ---
>  drivers/iio/adc/twl4030-madc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
> index 80ab2ed70b85..32db23d9a483 100644
> --- a/drivers/iio/adc/twl4030-madc.c
> +++ b/drivers/iio/adc/twl4030-madc.c
> @@ -899,11 +899,13 @@ static int twl4030_madc_probe(struct platform_device *pdev)
>  	ret = iio_device_register(iio_dev);
>  	if (ret) {
>  		dev_err(&pdev->dev, "could not register iio device\n");
> -		goto err_i2c;
> +		goto err_usb3v1;
>  	}
>  
>  	return 0;
>  
> +err_usb3v1:
> +	regulator_disable(madc->usb3v1);
>  err_i2c:
>  	twl4030_madc_set_current_generator(madc, 0, 0);
>  err_current_generator:

[toc] | [prev] | [next] | [standalone]


#1737969 — [PATCH 3/3] iio: adc: twl4030: Return an error if we can not enable the vusb3v1 regulator in 'twl4030_madc_probe()'

FromChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Date2017-09-23 08:10 +0200
Subject[PATCH 3/3] iio: adc: twl4030: Return an error if we can not enable the vusb3v1 regulator in 'twl4030_madc_probe()'
Message-ID<usLNw-7Vv-15@gated-at.bofh.it>
In reply to#1737964
If we can not enable the regulator, go through the error handling path
instead of silently continuing.

Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
This patch is highly speculative.
I don't find logical to return an error if we don't find the 'vusb3v1'
regulator, but continue if we find it, but can't enable it.
Returning an error if both cases (i.e. failing 'devm_regulator_get()' or
'regulator_enable)' seems the usual pattern in all the .probe functions
with a 'regulator_enable()' call have looked at (~ 10 of them taken
randomly)
---
 drivers/iio/adc/twl4030-madc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
index 32db23d9a483..e3cfb91bffc6 100644
--- a/drivers/iio/adc/twl4030-madc.c
+++ b/drivers/iio/adc/twl4030-madc.c
@@ -893,8 +893,10 @@ static int twl4030_madc_probe(struct platform_device *pdev)
 	}
 
 	ret = regulator_enable(madc->usb3v1);
-	if (ret)
+	if (ret) {
 		dev_err(madc->dev, "could not enable 3v1 bias regulator\n");
+		goto err_i2c;
+	}
 
 	ret = iio_device_register(iio_dev);
 	if (ret) {
-- 
2.11.0

[toc] | [prev] | [next] | [standalone]


#1738169 — Re: [PATCH 3/3] iio: adc: twl4030: Return an error if we can not enable the vusb3v1 regulator in 'twl4030_madc_probe()'

FromJonathan Cameron <jic23@kernel.org>
Date2017-09-24 14:10 +0200
SubjectRe: [PATCH 3/3] iio: adc: twl4030: Return an error if we can not enable the vusb3v1 regulator in 'twl4030_madc_probe()'
Message-ID<utdTr-5b-3@gated-at.bofh.it>
In reply to#1737969
On Sat, 23 Sep 2017 08:06:20 +0200
Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:

> If we can not enable the regulator, go through the error handling path
> instead of silently continuing.
> 
> Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Applied to the fixes-togreg-post-rc1 branch of iio.git.

I haven't explicitly marked this one for stable as it isn't broken
as such, just inconsistent.

Thanks,

Jonathan
> ---
> This patch is highly speculative.
> I don't find logical to return an error if we don't find the 'vusb3v1'
> regulator, but continue if we find it, but can't enable it.
> Returning an error if both cases (i.e. failing 'devm_regulator_get()' or
> 'regulator_enable)' seems the usual pattern in all the .probe functions
> with a 'regulator_enable()' call have looked at (~ 10 of them taken
> randomly)
> ---
>  drivers/iio/adc/twl4030-madc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
> index 32db23d9a483..e3cfb91bffc6 100644
> --- a/drivers/iio/adc/twl4030-madc.c
> +++ b/drivers/iio/adc/twl4030-madc.c
> @@ -893,8 +893,10 @@ static int twl4030_madc_probe(struct platform_device *pdev)
>  	}
>  
>  	ret = regulator_enable(madc->usb3v1);
> -	if (ret)
> +	if (ret) {
>  		dev_err(madc->dev, "could not enable 3v1 bias regulator\n");
> +		goto err_i2c;
> +	}
>  
>  	ret = iio_device_register(iio_dev);
>  	if (ret) {

[toc] | [prev] | [next] | [standalone]


#1738167 — Re: [PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'

FromJonathan Cameron <jic23@kernel.org>
Date2017-09-24 14:00 +0200
SubjectRe: [PATCH 1/3] iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'
Message-ID<utdJL-8er-1@gated-at.bofh.it>
In reply to#1737964
On Sat, 23 Sep 2017 08:06:18 +0200
Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:

> If 'devm_regulator_get()' fails, we should go through the existing error
> handling path instead of returning directly, as done is all the other
> error handling paths in this function.
> 
> Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Applied to the fixes-togreg-post-rc1 branch of iio.git and marked
for stable. 

Thanks,

Jonathan
> ---
>  drivers/iio/adc/twl4030-madc.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c
> index 1edd99f0c5e5..80ab2ed70b85 100644
> --- a/drivers/iio/adc/twl4030-madc.c
> +++ b/drivers/iio/adc/twl4030-madc.c
> @@ -887,8 +887,10 @@ static int twl4030_madc_probe(struct platform_device *pdev)
>  
>  	/* Enable 3v1 bias regulator for MADC[3:6] */
>  	madc->usb3v1 = devm_regulator_get(madc->dev, "vusb3v1");
> -	if (IS_ERR(madc->usb3v1))
> -		return -ENODEV;
> +	if (IS_ERR(madc->usb3v1)) {
> +		ret = -ENODEV;
> +		goto err_i2c;
> +	}
>  
>  	ret = regulator_enable(madc->usb3v1);
>  	if (ret)

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web