Re: [PATCH] iio: tmag5273: Fix runtime PM leak on measurement error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 14 Apr 2023 12:17:36 +0200
Gerald Loacker <gerald.loacker@xxxxxxxxxxxxxx> wrote:

> Am 14.04.2023 um 07:57 schrieb Nuno Sá:
> > On Thu, 2023-04-13 at 18:37 -0700, Lars-Peter Clausen wrote:  
> >> The tmag5273 gets a runtime PM reference before reading a measurement
> >> and
> >> releases it when done. But if the measurement fails the
> >> tmag5273_read_raw()
> >> function exits before releasing the reference.
> >>
> >> Make sure that this error path also releases the runtime PM
> >> reference.
> >>
> >> Fixes: 866a1389174b ("iio: magnetometer: add ti tmag5273 driver")
> >> Signed-off-by: Lars-Peter Clausen <lars@xxxxxxxxxx>
> >> ---  
> > 
> > Reviewed-by: Nuno Sa <nuno.sa@xxxxxxxxxx>
> >   
> 
> Acked-by: Gerald Loacker <gerald.loacker@xxxxxxxxxxxxxx>
Applied to the fixes-togreg branch of iio.git.

I'm not going to rush this in before the merge window. It might
even wait until after rc1 as it would have had any time in linux-next
before I send final pull request for the merge window. 

Jonathan

> 
> >>  drivers/iio/magnetometer/tmag5273.c | 5 +++--
> >>  1 file changed, 3 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/iio/magnetometer/tmag5273.c
> >> b/drivers/iio/magnetometer/tmag5273.c
> >> index 28bb7efe8df8..e155a75b3cd2 100644
> >> --- a/drivers/iio/magnetometer/tmag5273.c
> >> +++ b/drivers/iio/magnetometer/tmag5273.c
> >> @@ -296,12 +296,13 @@ static int tmag5273_read_raw(struct iio_dev
> >> *indio_dev,
> >>                         return ret;
> >>  
> >>                 ret = tmag5273_get_measure(data, &t, &x, &y, &z,
> >> &angle, &magnitude);
> >> -               if (ret)
> >> -                       return ret;
> >>  
> >>                 pm_runtime_mark_last_busy(data->dev);
> >>                 pm_runtime_put_autosuspend(data->dev);
> >>  
> >> +               if (ret)
> >> +                       return ret;
> >> +
> >>                 switch (chan->address) {
> >>                 case TEMPERATURE:
> >>                         *val = t;  
> >   





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux