mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
iio: light: isl29125: Use iio_push_to_buffers_with_ts() to allow source size runtime check
Also move the structure used as the source to the stack as it is only 16 bytes and not the target of an DMA or similar. Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com> Reviewed-by: Andy Shevchenko <andy@kernel.org> Link: https://patch.msgid.link/20250802164436.515988-10-jic23@kernel.org Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
@@ -51,11 +51,6 @@
|
||||
struct isl29125_data {
|
||||
struct i2c_client *client;
|
||||
u8 conf1;
|
||||
/* Ensure timestamp is naturally aligned */
|
||||
struct {
|
||||
u16 chans[3];
|
||||
aligned_s64 timestamp;
|
||||
} scan;
|
||||
};
|
||||
|
||||
#define ISL29125_CHANNEL(_color, _si) { \
|
||||
@@ -179,6 +174,11 @@ static irqreturn_t isl29125_trigger_handler(int irq, void *p)
|
||||
struct iio_dev *indio_dev = pf->indio_dev;
|
||||
struct isl29125_data *data = iio_priv(indio_dev);
|
||||
int i, j = 0;
|
||||
/* Ensure timestamp is naturally aligned */
|
||||
struct {
|
||||
u16 chans[3];
|
||||
aligned_s64 timestamp;
|
||||
} scan = { };
|
||||
|
||||
iio_for_each_active_channel(indio_dev, i) {
|
||||
int ret = i2c_smbus_read_word_data(data->client,
|
||||
@@ -186,10 +186,10 @@ static irqreturn_t isl29125_trigger_handler(int irq, void *p)
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
|
||||
data->scan.chans[j++] = ret;
|
||||
scan.chans[j++] = ret;
|
||||
}
|
||||
|
||||
iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
|
||||
iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan),
|
||||
iio_get_time_ns(indio_dev));
|
||||
|
||||
done:
|
||||
|
||||
Reference in New Issue
Block a user