Re: [PATCH] iio: buffer: hw-consumer: free scan_mask on buffer release

Andy Shevchenko
2026-04-29T07:04:53Z

On Tue, Apr 28, 2026 at 06:28:58PM +0100, Jonathan Cameron wrote:
> On Mon, 27 Apr 2026 19:11:39 +0800
> Felix Gu <ustc.gu@gmail.com> wrote:
>
> > The scan_mask lifetime changed in commit 9a2e1233d38c ("iio: buffer:
> > hw-consumer: remove redundant scan_mask flexible array").
> >
> > Before that change, the scan mask storage was embedded in struct
> > hw_consumer_buffer, so iio_hw_buf_release() could free the whole
> > allocation with a single kfree(hw_buf).
>
> > That commit moved the scan mask to a separate bitmap_zalloc() allocation
>
> > stored in buffer.scan_mask, but left iio_hw_buf_release() unchanged.
>
> Hmm. This reuse of a pointer that is otherwise set via very different
> paths sent me down a wild goose chase.
>
> Patch seems fine, but I'd like Nuno to take a quick look before I pick it up.

Yeah, more eyeballs is better here. I spent like an hour to understand
mysterious ways of scan_mask in IIO (we have a few of them and we have a few
objects based on struct iio_buffer), and we have constructors/destructors for
those objects which of that is responsible to handle scan_mask as appropriate.

May be all of this is documented somewhere?.. Dunno.

> > Free the scan mask in iio_hw_buf_release() before freeing the buffer
> > wrapper.

--
With Best Regards,
Andy Shevchenko