[PATCH] iio:common:ssp_sensors: Fix an error handling path ssp_probe()

Christophe JAILLET posted 1 patch 2 months, 1 week ago
drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] iio:common:ssp_sensors: Fix an error handling path ssp_probe()
Posted by Christophe JAILLET 2 months, 1 week ago
If an error occurs after a successful mfd_add_devices() call, it should be
undone by a corresponding mfd_remove_devices() call, as already done in the
remove function.

Fixes: 50dd64d57eee ("iio: common: ssp_sensors: Add sensorhub driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c b/drivers/iio/common/ssp_sensors/ssp_dev.c
index 1e167dc673ca..da09c9f3ceb6 100644
--- a/drivers/iio/common/ssp_sensors/ssp_dev.c
+++ b/drivers/iio/common/ssp_sensors/ssp_dev.c
@@ -503,7 +503,7 @@ static int ssp_probe(struct spi_device *spi)
 	ret = spi_setup(spi);
 	if (ret < 0) {
 		dev_err(&spi->dev, "Failed to setup spi\n");
-		return ret;
+		goto err_setup_spi;
 	}
 
 	data->fw_dl_state = SSP_FW_DL_STATE_NONE;
@@ -568,6 +568,8 @@ static int ssp_probe(struct spi_device *spi)
 err_setup_irq:
 	mutex_destroy(&data->pending_lock);
 	mutex_destroy(&data->comm_lock);
+err_setup_spi:
+	mfd_remove_devices(&spi->dev);
 
 	dev_err(&spi->dev, "Probe failed!\n");
 
-- 
2.51.0
Re: [PATCH] iio:common:ssp_sensors: Fix an error handling path ssp_probe()
Posted by Nuno Sá 2 months, 1 week ago
On Fri, 2025-10-10 at 20:58 +0200, Christophe JAILLET wrote:
> If an error occurs after a successful mfd_add_devices() call, it should be
> undone by a corresponding mfd_remove_devices() call, as already done in the
> remove function.
> 
> Fixes: 50dd64d57eee ("iio: common: ssp_sensors: Add sensorhub driver")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c
> b/drivers/iio/common/ssp_sensors/ssp_dev.c
> index 1e167dc673ca..da09c9f3ceb6 100644
> --- a/drivers/iio/common/ssp_sensors/ssp_dev.c
> +++ b/drivers/iio/common/ssp_sensors/ssp_dev.c
> @@ -503,7 +503,7 @@ static int ssp_probe(struct spi_device *spi)
>  	ret = spi_setup(spi);
>  	if (ret < 0) {
>  		dev_err(&spi->dev, "Failed to setup spi\n");
> -		return ret;
> +		goto err_setup_spi;
>  	}
>  
>  	data->fw_dl_state = SSP_FW_DL_STATE_NONE;
> @@ -568,6 +568,8 @@ static int ssp_probe(struct spi_device *spi)
>  err_setup_irq:
>  	mutex_destroy(&data->pending_lock);
>  	mutex_destroy(&data->comm_lock);
> +err_setup_spi:
> +	mfd_remove_devices(&spi->dev);
>  
>  	dev_err(&spi->dev, "Probe failed!\n");
>  
Re: [PATCH] iio:common:ssp_sensors: Fix an error handling path ssp_probe()
Posted by Jonathan Cameron 2 months, 1 week ago
On Fri, 10 Oct 2025 19:56:41 +0100
Nuno Sá <noname.nuno@gmail.com> wrote:

> On Fri, 2025-10-10 at 20:58 +0200, Christophe JAILLET wrote:
> > If an error occurs after a successful mfd_add_devices() call, it should be
> > undone by a corresponding mfd_remove_devices() call, as already done in the
> > remove function.
> > 
> > Fixes: 50dd64d57eee ("iio: common: ssp_sensors: Add sensorhub driver")
> > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > ---  
> 
> Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Applied to my temporary fixes branch (I'll rebase on rc1) and marked
for stable.

Thanks,

Jonathan

> 
> >  drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c
> > b/drivers/iio/common/ssp_sensors/ssp_dev.c
> > index 1e167dc673ca..da09c9f3ceb6 100644
> > --- a/drivers/iio/common/ssp_sensors/ssp_dev.c
> > +++ b/drivers/iio/common/ssp_sensors/ssp_dev.c
> > @@ -503,7 +503,7 @@ static int ssp_probe(struct spi_device *spi)
> >  	ret = spi_setup(spi);
> >  	if (ret < 0) {
> >  		dev_err(&spi->dev, "Failed to setup spi\n");
> > -		return ret;
> > +		goto err_setup_spi;
> >  	}
> >  
> >  	data->fw_dl_state = SSP_FW_DL_STATE_NONE;
> > @@ -568,6 +568,8 @@ static int ssp_probe(struct spi_device *spi)
> >  err_setup_irq:
> >  	mutex_destroy(&data->pending_lock);
> >  	mutex_destroy(&data->comm_lock);
> > +err_setup_spi:
> > +	mfd_remove_devices(&spi->dev);
> >  
> >  	dev_err(&spi->dev, "Probe failed!\n");
> >