2021-03-03 01:07:43

by Dinghao Liu

[permalink] [raw]
Subject: [PATCH] iio: adc: Fix error handling in vadc_do_conversion

There is one vadc_poll_wait_eoc() call in vadc_do_conversion
that we have caught its return value but lack further handling.
Check and jump to err_disable label just like the other
vadc_poll_wait_eoc() in this function.

Signed-off-by: Dinghao Liu <[email protected]>
---
drivers/iio/adc/qcom-spmi-vadc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
index 05ff948372b3..fe36b0ba8273 100644
--- a/drivers/iio/adc/qcom-spmi-vadc.c
+++ b/drivers/iio/adc/qcom-spmi-vadc.c
@@ -324,6 +324,8 @@ static int vadc_do_conversion(struct vadc_priv *vadc,

if (vadc->poll_eoc) {
ret = vadc_poll_wait_eoc(vadc, timeout);
+ if (ret)
+ goto err_disable;
} else {
ret = wait_for_completion_timeout(&vadc->complete, timeout);
if (!ret) {
--
2.17.1


2021-03-06 17:21:26

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: Fix error handling in vadc_do_conversion

On Mon, 1 Mar 2021 16:16:22 +0800
Dinghao Liu <[email protected]> wrote:

> There is one vadc_poll_wait_eoc() call in vadc_do_conversion
> that we have caught its return value but lack further handling.
> Check and jump to err_disable label just like the other
> vadc_poll_wait_eoc() in this function.
>
> Signed-off-by: Dinghao Liu <[email protected]>
Looks good to me, but will leave this a little longer for others to review.
If it looks like I have forgotten it in 2 weeks time, feel free to remind
me!

Jonathan

> ---
> drivers/iio/adc/qcom-spmi-vadc.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
> index 05ff948372b3..fe36b0ba8273 100644
> --- a/drivers/iio/adc/qcom-spmi-vadc.c
> +++ b/drivers/iio/adc/qcom-spmi-vadc.c
> @@ -324,6 +324,8 @@ static int vadc_do_conversion(struct vadc_priv *vadc,
>
> if (vadc->poll_eoc) {
> ret = vadc_poll_wait_eoc(vadc, timeout);
> + if (ret)
> + goto err_disable;
> } else {
> ret = wait_for_completion_timeout(&vadc->complete, timeout);
> if (!ret) {