lkml.org 
[lkml]   [2019]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 4.19 189/276] iio: adc: ti-ads7950: Fix improper use of mlock
On Thu, 6 Jun 2019 15:13:00 +0200
Pavel Machek <pavel@ucw.cz> wrote:

> (stable removed from cc list)
>
> > Indio->mlock is used for protecting the different iio device modes.
> > It is currently not being used in this way. Replace the lock with
> > an internal lock specifically used for protecting the SPI transfer
> > buffer.
> >
> > Signed-off-by: Justin Chen <justinpopo6@gmail.com>
> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > Signed-off-by: Sasha Levin <sashal@kernel.org>
> > ---
> > drivers/iio/adc/ti-ads7950.c | 19 +++++++++++++++----
> > 1 file changed, 15 insertions(+), 4 deletions(-)
> >
>
> > @@ -277,6 +280,7 @@ static irqreturn_t ti_ads7950_trigger_handler(int irq, void *p)
> > struct ti_ads7950_state *st = iio_priv(indio_dev);
> > int ret;
> >
> > + mutex_lock(&st->slock);
> > ret = spi_sync(st->spi, &st->ring_msg);
> > if (ret < 0)
> > goto out;
> > @@ -285,6 +289,7 @@ static irqreturn_t ti_ads7950_trigger_handler(int irq, void *p)
> > iio_get_time_ns(indio_dev));
> >
> > out:
> > + mutex_unlock(&st->slock);
> > iio_trigger_notify_done(indio_dev->trig);
> >
> > return IRQ_HANDLED;
>
> Does trigger_handler run from interrupt context? Prototype suggests
> so... If so, it can not really take mutexes...

It's an interrupt thread so taking mutexes should be fine.
For this particular case there is no 'top half' provided to
the call to iio_triggered_buffer_setup so nothing runs in interrupt context.

The spi_sync call can sleep anyway so this code can only run where
sleeping is fine.

Thanks,

Jonathan


>
> Best regards,
> Pavel
>


\
 
 \ /
  Last update: 2019-06-06 16:57    [W:0.173 / U:0.532 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site