ublk: return -EINTR if breaking from waiting for existed users in DEL_DEV block-6.5-2023-07-28
authorMing Lei <ming.lei@redhat.com>
Wed, 26 Jul 2023 14:45:02 +0000 (22:45 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 27 Jul 2023 13:17:36 +0000 (07:17 -0600)
If user interrupts wait_event_interruptible() in ublk_ctrl_del_dev(),
return -EINTR and let user know what happens.

Fixes: 0abe39dec065 ("block: ublk: improve handling device deletion")
Reported-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://lore.kernel.org/r/20230726144502.566785-4-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c

index 9fcba3834e8dc2b5aefee4922c662f8fbf8ed90b..21d2e71c5514df82874362589f211df1e6c25af3 100644 (file)
@@ -2126,8 +2126,8 @@ static int ublk_ctrl_del_dev(struct ublk_device **p_ub)
         * - the device number is freed already, we will not find this
         *   device via ublk_get_device_from_id()
         */
-       wait_event_interruptible(ublk_idr_wq, ublk_idr_freed(idx));
-
+       if (wait_event_interruptible(ublk_idr_wq, ublk_idr_freed(idx)))
+               return -EINTR;
        return 0;
 }