mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-17 20:54:10 +00:00
bdev: Fixup error handling in blkdev_get()
Commit89e524c04f
("loop: Fix mount(2) failure due to race with LOOP_SET_FD") converted blkdev_get() to use the new helpers for finishing claiming of a block device. However the conversion botched the error handling in blkdev_get() and thus the bdev has been marked as held even in case __blkdev_get() returned error. This led to occasional warnings with block/001 test from blktests like: kernel: WARNING: CPU: 5 PID: 907 at fs/block_dev.c:1899 __blkdev_put+0x396/0x3a0 Correct the error handling. CC: stable@vger.kernel.org Fixes:89e524c04f
("loop: Fix mount(2) failure due to race with LOOP_SET_FD") Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
fd03177c33
commit
e91455bad5
1 changed files with 4 additions and 1 deletions
|
@ -1750,7 +1750,10 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
|
|||
|
||||
/* finish claiming */
|
||||
mutex_lock(&bdev->bd_mutex);
|
||||
bd_finish_claiming(bdev, whole, holder);
|
||||
if (!res)
|
||||
bd_finish_claiming(bdev, whole, holder);
|
||||
else
|
||||
bd_abort_claiming(bdev, whole, holder);
|
||||
/*
|
||||
* Block event polling for write claims if requested. Any
|
||||
* write holder makes the write_holder state stick until
|
||||
|
|
Loading…
Add table
Reference in a new issue