iio: accel: Use iio_push_to_buffers_with_ts() to provide length for runtime checks.
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 13 Apr 2025 10:34:33 +0000 (11:34 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 21 May 2025 13:20:26 +0000 (14:20 +0100)
This new function allows us to perform debug checks in the helper to ensure
that the overrun does not occur.  Use it in all the simple cases where
either a static buffer or a structure is used in the drivers.

Reviewed-by: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/20250413103443.2420727-11-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
14 files changed:
drivers/iio/accel/adxl355_core.c
drivers/iio/accel/bma180.c
drivers/iio/accel/bma220_spi.c
drivers/iio/accel/bma400_core.c
drivers/iio/accel/fxls8962af-core.c
drivers/iio/accel/kxcjk-1013.c
drivers/iio/accel/kxsd9.c
drivers/iio/accel/mma7455_core.c
drivers/iio/accel/mma8452.c
drivers/iio/accel/msa311.c
drivers/iio/accel/mxc4005.c
drivers/iio/accel/sca3300.c
drivers/iio/accel/stk8312.c
drivers/iio/accel/stk8ba50.c

index e8cd21f..ae949ad 100644 (file)
@@ -666,8 +666,8 @@ static irqreturn_t adxl355_trigger_handler(int irq, void *p)
        if (ret)
                goto out_unlock_notify;
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &data->buffer,
-                                          pf->timestamp);
+       iio_push_to_buffers_with_ts(indio_dev, &data->buffer,
+                                   sizeof(data->buffer), pf->timestamp);
 
 out_unlock_notify:
        mutex_unlock(&data->lock);
index aa664a9..93a8686 100644 (file)
@@ -887,7 +887,7 @@ static irqreturn_t bma180_trigger_handler(int irq, void *p)
 
        mutex_unlock(&data->mutex);
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, time_ns);
+       iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), time_ns);
 err:
        iio_trigger_notify_done(indio_dev->trig);
 
index 978108f..38f7498 100644 (file)
@@ -103,8 +103,8 @@ static irqreturn_t bma220_trigger_handler(int irq, void *p)
        if (ret < 0)
                goto 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);
 err:
        mutex_unlock(&data->lock);
        iio_trigger_notify_done(indio_dev->trig);
index 23f5e1c..85e23ba 100644 (file)
@@ -1591,8 +1591,9 @@ static irqreturn_t bma400_trigger_handler(int irq, void *p)
                data->buffer.temperature = temp;
        }
 
-       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));
 
        mutex_unlock(&data->mutex);
        iio_trigger_notify_done(indio_dev->trig);
index 48e4282..6d23da3 100644 (file)
@@ -983,8 +983,8 @@ static int fxls8962af_fifo_flush(struct iio_dev *indio_dev)
                               sizeof(data->scan.channels[0]));
                }
 
-               iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
-                                                  tstamp);
+               iio_push_to_buffers_with_ts(indio_dev, &data->scan,
+                                           sizeof(data->scan), tstamp);
 
                tstamp += sample_period;
        }
index f2496ca..971b76c 100644 (file)
@@ -1253,8 +1253,8 @@ static irqreturn_t kxcjk1013_trigger_handler(int irq, void *p)
        if (ret < 0)
                goto err;
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
-                                          data->timestamp);
+       iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan),
+                                   data->timestamp);
 err:
        iio_trigger_notify_done(indio_dev->trig);
 
index fb14b87..cfc3126 100644 (file)
@@ -229,9 +229,8 @@ static irqreturn_t kxsd9_trigger_handler(int irq, void *p)
                goto out;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev,
-                                          &hw_values,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &hw_values, sizeof(hw_values),
+                                   iio_get_time_ns(indio_dev));
 out:
        iio_trigger_notify_done(indio_dev->trig);
 
index 3074662..a2b5bdf 100644 (file)
@@ -103,8 +103,9 @@ static irqreturn_t mma7455_trigger_handler(int irq, void *p)
        if (ret)
                goto done;
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &mma7455->scan,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &mma7455->scan,
+                                   sizeof(mma7455->scan),
+                                   iio_get_time_ns(indio_dev));
 
 done:
        iio_trigger_notify_done(indio_dev->trig);
index 05f5482..aba444a 100644 (file)
@@ -1103,8 +1103,9 @@ static irqreturn_t mma8452_trigger_handler(int irq, void *p)
        if (ret < 0)
                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 d31c11f..c31c53a 100644 (file)
@@ -919,8 +919,8 @@ static irqreturn_t msa311_buffer_thread(int irq, void *p)
 
        mutex_unlock(&msa311->lock);
 
-       iio_push_to_buffers_with_timestamp(indio_dev, &buf,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_ts(indio_dev, &buf, sizeof(buf),
+                                   iio_get_time_ns(indio_dev));
 
 notify_done:
        iio_trigger_notify_done(indio_dev->trig);
index c9c4bab..1075c8c 100644 (file)
@@ -335,8 +335,8 @@ static irqreturn_t mxc4005_trigger_handler(int irq, void *private)
        if (ret < 0)
                goto 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);
 
 err:
        iio_trigger_notify_done(indio_dev->trig);
index 9b00a3d..1132bba 100644 (file)
@@ -505,8 +505,9 @@ static irqreturn_t sca3300_trigger_handler(int irq, void *p)
                channels[i++] = val;
        }
 
-       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));
 out:
        iio_trigger_notify_done(indio_dev->trig);
 
index d3ff128..dfac2e4 100644 (file)
@@ -460,8 +460,8 @@ static irqreturn_t stk8312_trigger_handler(int irq, void *p)
        }
        mutex_unlock(&data->lock);
 
-       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);
 err:
        iio_trigger_notify_done(indio_dev->trig);
 
index e5fed3e..05d4fd5 100644 (file)
@@ -340,8 +340,8 @@ static irqreturn_t stk8ba50_trigger_handler(int irq, void *p)
                        data->scan.chans[i++] = ret;
                }
        }
-       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);
 err:
        mutex_unlock(&data->lock);
        iio_trigger_notify_done(indio_dev->trig);