block: fix wrong mode for blkdev_put() from disk_scan_partitions()
authorYu Kuai <yukuai3@huawei.com>
Tue, 7 Mar 2023 10:55:52 +0000 (18:55 +0800)
committerJens Axboe <axboe@kernel.dk>
Tue, 7 Mar 2023 14:24:38 +0000 (07:24 -0700)
commit428913bce1e67ccb4dae317fd0332545bf8c9233
tree879ff403638264c4ed3b5250b6f528a5660f77d9
parentfe15c26ee26efa11741a7b632e9f23b01aca4cc6
block: fix wrong mode for blkdev_put() from disk_scan_partitions()

If disk_scan_partitions() is called with 'FMODE_EXCL',
blkdev_get_by_dev() will be called without 'FMODE_EXCL', however, follow
blkdev_put() is still called with 'FMODE_EXCL', which will cause
'bd_holders' counter to leak.

Fix the problem by using the right mode for blkdev_put().

Reported-by: syzbot+2bcc0d79e548c4f62a59@syzkaller.appspotmail.com
Link: https://lore.kernel.org/lkml/f9649d501bc8c3444769418f6c26263555d9d3be.camel@linux.ibm.com/T/
Tested-by: Julian Ruess <julianr@linux.ibm.com>
Fixes: e5cfefa97bcc ("block: fix scan partition for exclusively open device again")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/genhd.c