Re: [PATCH 1/2] iio: accel: kxsd9: fix use-after-free on remove
From: Jonathan Cameron
Date: Sat Jul 04 2026 - 20:10:15 EST
On Fri, 03 Jul 2026 22:53:22 +0530
Biren Pandya <birenpandya@xxxxxxxxx> wrote:
> The kxsd9 driver currently calls iio_triggered_buffer_cleanup() before
> iio_device_unregister() in the remove() function. This order creates a
> race condition where userspace can still access sysfs or ioctl interfaces
> while the triggered buffers are being torn down, potentially leading to
> a use-after-free.
>
> Fix this by swapping the cleanup order. Unregister the IIO device first
> to guarantee that all userspace interfaces are destroyed and no new
> accesses can occur before cleaning up the triggered buffers.
>
> This vulnerability was flagged by the Sashiko automated review system.
>
> Link: https://sashiko.dev/#/patchset/20260621193036.78549-2-birenpandya@xxxxxxxxx
> Fixes: 9a9a369d6178 ("iio: accel: kxsd9: Deploy system and runtime PM")
That tag touches the pm runtime stuff just below, but nothing to do with the
bug reported here.
Should be:
Fixes: 0427a106a98a ("iio: accel: kxsd9: Add triggered buffer handling")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Biren Pandya <birenpandya@xxxxxxxxx>
> ---
> drivers/iio/accel/kxsd9.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c
> index 7ac885d94d7f4..27adcdd312014 100644
> --- a/drivers/iio/accel/kxsd9.c
> +++ b/drivers/iio/accel/kxsd9.c
> @@ -478,8 +478,8 @@ void kxsd9_common_remove(struct device *dev)
> struct iio_dev *indio_dev = dev_get_drvdata(dev);
> struct kxsd9_state *st = iio_priv(indio_dev);
>
> - iio_triggered_buffer_cleanup(indio_dev);
> iio_device_unregister(indio_dev);
> + iio_triggered_buffer_cleanup(indio_dev);
> pm_runtime_get_sync(dev);
> pm_runtime_put_noidle(dev);
> pm_runtime_disable(dev);
>