block: fix the exclusive open mask in disk_scan_partitions
authorChristoph Hellwig <hch@lst.de>
Wed, 21 Jun 2023 12:49:14 +0000 (14:49 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 21 Jun 2023 13:37:52 +0000 (07:37 -0600)
FMODE_EXEC has nothing to do with exclusive opens, and even is of
the wrong type.  We need to check for BLK_OPEN_EXCL here.

Fixes: 985958b8584c ("block: fix wrong mode for blkdev_get_by_dev() from disk_scan_partitions()")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230621124914.185992-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/genhd.c

index a94952a..3d287b3 100644 (file)
@@ -366,7 +366,7 @@ int disk_scan_partitions(struct gendisk *disk, blk_mode_t mode)
        }
 
        set_bit(GD_NEED_PART_SCAN, &disk->state);
-       bdev = blkdev_get_by_dev(disk_devt(disk), mode & ~FMODE_EXEC, NULL,
+       bdev = blkdev_get_by_dev(disk_devt(disk), mode & ~BLK_OPEN_EXCL, NULL,
                                 NULL);
        if (IS_ERR(bdev))
                ret =  PTR_ERR(bdev);