iio: core: Leave private pointer NULL when no private data supplied
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 4 Mar 2024 14:04:32 +0000 (16:04 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 25 Mar 2024 20:10:12 +0000 (20:10 +0000)
In iio_device_alloc() when size of the private data is 0,
the private pointer is calculated to point behind the valid data.
Leave it NULL when no private data supplied.

Fixes: 6d4ebd565d15 ("iio: core: wrap IIO device into an iio_dev_opaque object")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Link: https://lore.kernel.org/r/20240304140650.977784-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/industrialio-core.c

index 4302093b92c75a93e6373051d67b2e8ccbc88c6b..8684ba246969bf722175d75a1d11b0c4bea8c1ab 100644 (file)
@@ -1654,8 +1654,10 @@ struct iio_dev *iio_device_alloc(struct device *parent, int sizeof_priv)
                return NULL;
 
        indio_dev = &iio_dev_opaque->indio_dev;
-       indio_dev->priv = (char *)iio_dev_opaque +
-               ALIGN(sizeof(struct iio_dev_opaque), IIO_DMA_MINALIGN);
+
+       if (sizeof_priv)
+               indio_dev->priv = (char *)iio_dev_opaque +
+                       ALIGN(sizeof(*iio_dev_opaque), IIO_DMA_MINALIGN);
 
        indio_dev->dev.parent = parent;
        indio_dev->dev.type = &iio_device_type;