[PATCHv2] iio: iio-mux: use flexible array member
From: Rosen Penev
Date: Mon Mar 16 2026 - 19:31:23 EST
Make it clear that there's trailing data
Removes a pointer from the struct.
Use array_size for the sizeof calculations. Slightly cleaner.
Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
---
v2: use array_size
drivers/iio/multiplexer/iio-mux.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/iio/multiplexer/iio-mux.c b/drivers/iio/multiplexer/iio-mux.c
index b742ca9a99d1..f2bc8f3aad95 100644
--- a/drivers/iio/multiplexer/iio-mux.c
+++ b/drivers/iio/multiplexer/iio-mux.c
@@ -33,8 +33,8 @@ struct mux {
struct iio_channel *parent;
struct iio_chan_spec *chan;
struct iio_chan_spec_ext_info *ext_info;
- struct mux_child *child;
u32 delay_us;
+ struct mux_child child[];
};
static int iio_mux_select(struct mux *mux, int idx)
@@ -381,8 +381,8 @@ static int mux_probe(struct platform_device *pdev)
}
sizeof_priv = sizeof(*mux);
- sizeof_priv += sizeof(*mux->child) * children;
- sizeof_priv += sizeof(*mux->chan) * children;
+ sizeof_priv += array_size(children, sizeof(*mux->child));
+ sizeof_priv += array_size(children, sizeof(*mux->chan));
sizeof_priv += sizeof_ext_info;
indio_dev = devm_iio_device_alloc(dev, sizeof_priv);
@@ -390,7 +390,6 @@ static int mux_probe(struct platform_device *pdev)
return -ENOMEM;
mux = iio_priv(indio_dev);
- mux->child = (struct mux_child *)(mux + 1);
mux->chan = (struct iio_chan_spec *)(mux->child + children);
platform_set_drvdata(pdev, indio_dev);
--
2.53.0