[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250913145218.03d1be7d@jic23-huawei>
Date: Sat, 13 Sep 2025 14:52:18 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: David Lechner <dlechner@...libre.com>
Cc: Andy Shevchenko <andriy.shevchenko@...el.com>, Nuno Sá
<nuno.sa@...log.com>, Andy Shevchenko <andy@...nel.org>,
linux-iio@...r.kernel.org, linux-kernel@...r.kernel.org, Daniel Lezcano
<daniel.lezcano@...aro.org>, Andy Shevchenko <andy.shevchenko@...il.com>
Subject: Re: [PATCH 2/7] iio: buffer:
iio_push_to_buffers_with_ts_unaligned() might_sleep()
On Fri, 12 Sep 2025 13:40:37 -0500
David Lechner <dlechner@...libre.com> wrote:
> On 9/12/25 1:10 PM, Andy Shevchenko wrote:
> > On Fri, Sep 12, 2025 at 11:05:53AM -0500, David Lechner wrote:
> >> Call might_sleep() in iio_push_to_buffers_with_ts_unaligned() since it
> >> can allocate memory, which may sleep.
> >
> > It can or does it always do?
> > If the first one is correct, better to use might_sleep_if().
> >
>
> Just below this in the function is:
>
> if (iio_dev_opaque->bounce_buffer_size != indio_dev->scan_bytes) {
> void *bb;
>
> bb = devm_krealloc(&indio_dev->dev,
> iio_dev_opaque->bounce_buffer,
> indio_dev->scan_bytes, GFP_KERNEL);
> if (!bb)
> return -ENOMEM;
> iio_dev_opaque->bounce_buffer = bb;
> iio_dev_opaque->bounce_buffer_size = indio_dev->scan_bytes;
> }
>
>
> Would it make sense to move the might_sleep() inside of this
> if statement rather than repeat the condition in might_sleep_if()?
>
> devm_krealloc() is the only part of this function that might sleep.
>
Whilst true that the sleep is only at this point, we always go into
this path the first time (assuming I remember correctly how this works).
So I'd argue a might_sleep() where you have it is appropriate
as we will already have spat out the debug info if we get to the
second case that doesn't sleep.
If this ever matters to a driver, we could add a new function
to allocate the bounce buffer earlier.
Jonathan
Powered by blists - more mailing lists