block: fix module reference leakage from bdev_open_by_dev error path
authorYu Kuai <yukuai3@huawei.com>
Sat, 6 Apr 2024 09:09:25 +0000 (17:09 +0800)
committerChristian Brauner <brauner@kernel.org>
Thu, 11 Apr 2024 09:14:36 +0000 (11:14 +0200)
At the time bdev_may_open() is called, module reference is grabbed
already, hence module reference should be released if bdev_may_open()
failed.

This problem is found by code review.

Fixes: ed5cc702d311 ("block: Add config option to not allow writing to mounted devices")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240406090930.2252838-22-yukuai1@huaweicloud.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
block/bdev.c

index b8e32d933a6369aebbffe36e2ce3165cc2288bef..3caf24e665596874d5d7b0644575c87187bd20e7 100644 (file)
@@ -873,7 +873,7 @@ int bdev_open(struct block_device *bdev, blk_mode_t mode, void *holder,
                goto abort_claiming;
        ret = -EBUSY;
        if (!bdev_may_open(bdev, mode))
-               goto abort_claiming;
+               goto put_module;
        if (bdev_is_partition(bdev))
                ret = blkdev_get_part(bdev, mode);
        else