]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
loop: add missing bd_abort_claiming in loop_set_status
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Wed, 7 Jan 2026 10:41:43 +0000 (19:41 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 7 Jan 2026 15:04:42 +0000 (08:04 -0700)
Commit 08e136ebd193 ("loop: don't change loop device under exclusive
opener in loop_set_status") forgot to call bd_abort_claiming() when
mutex_lock_killable() failed.

Fixes: 08e136ebd193 ("loop: don't change loop device under exclusive opener in loop_set_status")
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/loop.c

index ca74cc31bf07ffe5386d4074c0070898b3e1290f..bd59c0e9508b729942e501ec02983dce4e6828fe 100644 (file)
@@ -1245,7 +1245,8 @@ loop_set_status(struct loop_device *lo, blk_mode_t mode,
 
        err = mutex_lock_killable(&lo->lo_mutex);
        if (err)
-               return err;
+               goto out_abort_claiming;
+
        if (lo->lo_state != Lo_bound) {
                err = -ENXIO;
                goto out_unlock;
@@ -1284,6 +1285,7 @@ out_unfreeze:
        }
 out_unlock:
        mutex_unlock(&lo->lo_mutex);
+out_abort_claiming:
        if (!(mode & BLK_OPEN_EXCL))
                bd_abort_claiming(bdev, loop_set_status);
 out_reread_partitions: