From: Nuno Sá Date: Mon, 16 Feb 2026 13:24:27 +0000 (+0000) Subject: iio: buffer: Fix wait_queue not being removed X-Git-Tag: v7.0-rc4~15^2~7^2~2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=064234044056c93a3719d6893e6e5a26a94a61b6;p=thirdparty%2Flinux.git iio: buffer: Fix wait_queue not being removed In the edge case where the IIO device is unregistered while we're buffering, we were directly returning an error without removing the wait queue. Instead, set 'ret' and break out of the loop. Fixes: 9eeee3b0bf19 ("iio: Add output buffer support") Signed-off-by: Nuno Sá Reviewed-by: David Lechner Cc: Signed-off-by: Jonathan Cameron --- diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c index f15a180dc49ea..46f36a6ed2710 100644 --- a/drivers/iio/industrialio-buffer.c +++ b/drivers/iio/industrialio-buffer.c @@ -228,8 +228,10 @@ static ssize_t iio_buffer_write(struct file *filp, const char __user *buf, written = 0; add_wait_queue(&rb->pollq, &wait); do { - if (!indio_dev->info) - return -ENODEV; + if (!indio_dev->info) { + ret = -ENODEV; + break; + } if (!iio_buffer_space_available(rb)) { if (signal_pending(current)) {