]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: light: Simple conversions to iio_push_to_buffers_with_ts()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 2 Aug 2025 16:44:36 +0000 (17:44 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 16 Aug 2025 15:00:17 +0000 (16:00 +0100)
This new function allows for runtime checks on the provided source buffer
being of sufficient size to accommodate the enabled channel data layout and
the naturally aligned s64 timestamp (which is non obvious and a frequent
source of bugs in the past).

This patch includes the remaining simple cases for light sensor drivers.

Cc: Mudit Sharma <muditsharma.info@gmail.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Cc: Matti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Link: https://patch.msgid.link/20250802164436.515988-17-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/light/bh1745.c
drivers/iio/light/hid-sensor-als.c
drivers/iio/light/ltr501.c
drivers/iio/light/opt4060.c
drivers/iio/light/rohm-bu27034.c
drivers/iio/light/rpr0521.c
drivers/iio/light/si1145.c
drivers/iio/light/vcnl4000.c
drivers/iio/light/veml6030.c

index c7c604c96f6e0407c37842032f34390004590274..10b00344bbedbf01a5fb4a47f9690934ba986042 100644 (file)
@@ -755,8 +755,8 @@ static irqreturn_t bh1745_trigger_handler(int interrupt, void *p)
                scan.chans[j++] = value;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &scan,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan),
+                                   iio_get_time_ns(indio_dev));
 
 err:
        iio_trigger_notify_done(indio_dev->trig);
index 830e5ae7f34a75bb1bc4b71debc68f83dc6d612d..384572844162c637d2200b261accb78b67396ab1 100644 (file)
@@ -262,8 +262,9 @@ static int als_proc_event(struct hid_sensor_hub_device *hsdev,
                if (!als_state->timestamp)
                        als_state->timestamp = iio_get_time_ns(indio_dev);
 
-               iio_push_to_buffers_with_timestamp(indio_dev, &als_state->scan,
-                                                  als_state->timestamp);
+               iio_push_to_buffers_with_ts(indio_dev, &als_state->scan,
+                                           sizeof(als_state->scan),
+                                           als_state->timestamp);
                als_state->timestamp = 0;
        }
 
index debf57a52d1c0924660fe9538b8f704ac9facb59..022e0693983bda88f37c2a46484e66b8b46d0519 100644 (file)
@@ -1315,8 +1315,8 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)
                scan.channels[j++] = psdata & LTR501_PS_DATA_MASK;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &scan,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan),
+                                   iio_get_time_ns(indio_dev));
 
 done:
        iio_trigger_notify_done(indio_dev->trig);
index 7a1b6c70382352576ab62b81c30fc25e2297dca8..aa10400e0a1f0148f9eed598785e18976b58e78f 100644 (file)
@@ -1104,7 +1104,7 @@ static irqreturn_t opt4060_trigger_handler(int irq, void *p)
                }
        }
 
-       iio_push_to_buffers_with_timestamp(idev, &raw, pf->timestamp);
+       iio_push_to_buffers_with_ts(idev, &raw, sizeof(raw), pf->timestamp);
 err_read:
        iio_trigger_notify_done(idev->trig);
        return IRQ_HANDLED;
index 7cec5e9433736648922c66ef8ef35c32d8098b0c..28d111ac8c0a7b0cabc7b1434201c603cf20c143 100644 (file)
@@ -1193,7 +1193,8 @@ static int bu27034_buffer_thread(void *arg)
                         */
                        data->scan.mlux = (u32)mlux;
                }
-               iio_push_to_buffers_with_timestamp(idev, &data->scan, tstamp);
+               iio_push_to_buffers_with_ts(idev, &data->scan,
+                                           sizeof(data->scan), tstamp);
        }
 
        return 0;
index c50183f07240316890cede1d7c55715422669386..fbd116272921f16cde89d4c421f2b1bb22ec791c 100644 (file)
@@ -457,8 +457,8 @@ static irqreturn_t rpr0521_trigger_consumer_handler(int irq, void *p)
                data->scan.channels,
                (3 * 2) + 1);   /* 3 * 16-bit + (discarded) int clear reg. */
        if (!err)
-               iio_push_to_buffers_with_timestamp(indio_dev,
-                                                  &data->scan, pf->timestamp);
+               iio_push_to_buffers_with_ts(indio_dev, &data->scan,
+                                           sizeof(data->scan), pf->timestamp);
        else
                dev_err(&data->client->dev,
                        "Trigger consumer can't read from sensor.\n");
index 4aa02afd853e90b51e803bc23a5b9fde4435e9d4..f8eb251eca8dc3e9cf7978c8f6139114bfa72803 100644 (file)
@@ -494,8 +494,9 @@ static irqreturn_t si1145_trigger_handler(int irq, void *private)
                        goto done;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
-               iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, data->buffer,
+                                   sizeof(data->buffer),
+                                   iio_get_time_ns(indio_dev));
 
 done:
        iio_trigger_notify_done(indio_dev->trig);
index eccf690eae8c4db9eaa5ef63ccea1fb314640067..cc81a30b7c701d0a7d3820feb135243ac307dcf8 100644 (file)
@@ -1698,8 +1698,8 @@ static irqreturn_t vcnl4010_trigger_handler(int irq, void *p)
        if (!data_read)
                goto end;
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &scan,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan),
+                                   iio_get_time_ns(indio_dev));
 
 end:
        iio_trigger_notify_done(indio_dev->trig);
index 0945f146bedbda79511e704158122acaac5e60c1..6bcacae3863c0e3a762afa48b0cba31303aa80b4 100644 (file)
@@ -903,7 +903,7 @@ static irqreturn_t veml6030_trigger_handler(int irq, void *p)
                scan.chans[i++] = reg;
        }
 
-       iio_push_to_buffers_with_timestamp(iio, &scan, pf->timestamp);
+       iio_push_to_buffers_with_ts(iio, &scan, sizeof(scan), pf->timestamp);
 
 done:
        iio_trigger_notify_done(iio->trig);