]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iio: imu: st_lsm6dsx: fix stack leak in tagged FIFO buffer
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Apr 2026 13:40:48 +0000 (15:40 +0200)
committerJonathan Cameron <jic23@kernel.org>
Fri, 15 May 2026 11:01:38 +0000 (12:01 +0100)
The tagged FIFO path declares iio_buff on the stack with __aligned(8)
but no initializer, but there is a hole in the structure, which will
then leak to userspace as ST_LSM6DSX_SAMPLE_SIZE bytes (6) will be
copied, but the space between that and the timestamp are not
initialized.

Commit c14edb4d0bdc ("iio:imu:st_lsm6dsx Fix alignment and data leak
issues") moved the untagged FIFO path to a kzalloc'd buffer in hw->scan,
but for the tagged path it only added the alignment qualifier and not
the initializer :(

Fix this by just zero-initializing the structure on the stack.

Cc: Lorenzo Bianconi <lorenzo@kernel.org>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: David Lechner <dlechner@baylibre.com>
Cc: "Nuno Sá" <nuno.sa@analog.com>
Cc: Andy Shevchenko <andy@kernel.org>
Fixes: c14edb4d0bdc ("iio:imu:st_lsm6dsx Fix alignment and data leak issues")
Cc: stable <stable@kernel.org>
Assisted-by: gregkh_clanker_t1000
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c

index 5b28a3ffcc3d0a5812fb9706943c88d222835562..48291203d1cdd73cd0092d9065a77ae848d8fcaf 100644 (file)
@@ -609,7 +609,7 @@ int st_lsm6dsx_read_tagged_fifo(struct st_lsm6dsx_hw *hw)
         * must be passed a buffer that is aligned to 8 bytes so
         * as to allow insertion of a naturally aligned timestamp.
         */
-       u8 iio_buff[ST_LSM6DSX_IIO_BUFF_SIZE] __aligned(8);
+       u8 iio_buff[ST_LSM6DSX_IIO_BUFF_SIZE] __aligned(8) = { };
        u8 tag;
        bool reset_ts = false;
        int i, err, read_len;