2014-04-29 05:55:54

by Jimmy Li

[permalink] [raw]
Subject: [PATCH] staging:iio:ad2s1210 fix a leak when device removed

Signed-off-by: Jimmy Li <[email protected]>
---
drivers/staging/iio/resolver/ad2s1210.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
index 7fbaba4..3d6e123 100644
--- a/drivers/staging/iio/resolver/ad2s1210.c
+++ b/drivers/staging/iio/resolver/ad2s1210.c
@@ -716,6 +716,7 @@ static int ad2s1210_remove(struct spi_device *spi)

iio_device_unregister(indio_dev);
ad2s1210_free_gpios(iio_priv(indio_dev));
+ devm_iio_device_free(&spi->dev, indio_dev);

return 0;
}
--
1.7.9.5


2014-04-29 06:07:11

by Jingoo Han

[permalink] [raw]
Subject: Re: [PATCH] staging:iio:ad2s1210 fix a leak when device removed

On Tuesday, April 29, 2014 2:56 PM, Jimmy Li wrote:
>
> Signed-off-by: Jimmy Li <[email protected]>
> ---
> drivers/staging/iio/resolver/ad2s1210.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
> index 7fbaba4..3d6e123 100644
> --- a/drivers/staging/iio/resolver/ad2s1210.c
> +++ b/drivers/staging/iio/resolver/ad2s1210.c
> @@ -716,6 +716,7 @@ static int ad2s1210_remove(struct spi_device *spi)
>
> iio_device_unregister(indio_dev);
> ad2s1210_free_gpios(iio_priv(indio_dev));
> + devm_iio_device_free(&spi->dev, indio_dev);

NAK.

In ad2s1210_probe(),devm_iio_device_alloc() was already used.
So, when ad2s1210_remove() is called, iio_device_free() will
be called automatically. So, the leak never happens.

If you want to know about devm_* functions, please refer
to the following.

Documentation/driver-model/devres.txt

Best regards,
Jingoo Han
>
> return 0;
> }
> --
> 1.7.9.5

2014-04-29 06:30:00

by Jimmy Li

[permalink] [raw]
Subject: Re: [PATCH] staging:iio:ad2s1210 fix a leak when device removed

On Tue, Apr 29, 2014 at 03:07:04PM +0900, Jingoo Han wrote:
> On Tuesday, April 29, 2014 2:56 PM, Jimmy Li wrote:
> >
> > Signed-off-by: Jimmy Li <[email protected]>
> > ---
> > drivers/staging/iio/resolver/ad2s1210.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
> > index 7fbaba4..3d6e123 100644
> > --- a/drivers/staging/iio/resolver/ad2s1210.c
> > +++ b/drivers/staging/iio/resolver/ad2s1210.c
> > @@ -716,6 +716,7 @@ static int ad2s1210_remove(struct spi_device *spi)
> >
> > iio_device_unregister(indio_dev);
> > ad2s1210_free_gpios(iio_priv(indio_dev));
> > + devm_iio_device_free(&spi->dev, indio_dev);
>
> NAK.
>
> In ad2s1210_probe(),devm_iio_device_alloc() was already used.
> So, when ad2s1210_remove() is called, iio_device_free() will
> be called automatically. So, the leak never happens.
>
> If you want to know about devm_* functions, please refer
> to the following.
>
> Documentation/driver-model/devres.txt

Thank you for your reply,

I understand it now, just ignore this patch.

>
> Best regards,
> Jingoo Han
> >
> > return 0;
> > }
> > --
> > 1.7.9.5
>