]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: buffer: hw-consumer: remove redundant scan_mask flexible array
authorNuno Sá <nuno.sa@analog.com>
Tue, 3 Mar 2026 11:50:44 +0000 (11:50 +0000)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 14 Mar 2026 12:10:21 +0000 (12:10 +0000)
The scan_mask flexible array member in hw_consumer_buffer duplicates
the scan_mask pointer already present in struct iio_buffer. Remove it
and allocate the bitmap directly with bitmap_zalloc(), assigning it to
buf->buffer.scan_mask. This simplifies the code and there's no need for
the flex array allocation.

Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/buffer/industrialio-hw-consumer.c

index cb771ef8eeb331ee7e3961a8e712dcaa6ef9c25c..24d7df603760f4ff795b165a1b20325e93cbc464 100644 (file)
@@ -28,7 +28,6 @@ struct hw_consumer_buffer {
        struct list_head head;
        struct iio_dev *indio_dev;
        struct iio_buffer buffer;
-       long scan_mask[];
 };
 
 static struct hw_consumer_buffer *iio_buffer_to_hw_consumer_buffer(
@@ -52,7 +51,6 @@ static const struct iio_buffer_access_funcs iio_hw_buf_access = {
 static struct hw_consumer_buffer *iio_hw_consumer_get_buffer(
        struct iio_hw_consumer *hwc, struct iio_dev *indio_dev)
 {
-       unsigned int mask_longs = BITS_TO_LONGS(iio_get_masklength(indio_dev));
        struct hw_consumer_buffer *buf;
 
        list_for_each_entry(buf, &hwc->buffers, head) {
@@ -60,13 +58,18 @@ static struct hw_consumer_buffer *iio_hw_consumer_get_buffer(
                        return buf;
        }
 
-       buf = kzalloc_flex(*buf, scan_mask, mask_longs);
+       buf = kzalloc_obj(*buf);
        if (!buf)
                return NULL;
 
        buf->buffer.access = &iio_hw_buf_access;
        buf->indio_dev = indio_dev;
-       buf->buffer.scan_mask = buf->scan_mask;
+       buf->buffer.scan_mask = bitmap_zalloc(iio_get_masklength(indio_dev),
+                                             GFP_KERNEL);
+       if (!buf->buffer.scan_mask) {
+               kfree(buf);
+               return NULL;
+       }
 
        iio_buffer_init(&buf->buffer);
        list_add_tail(&buf->head, &hwc->buffers);