On Tue 17-12-19 19:04:28, Michal Suchanek wrote: > It is not clear that no other thread cannot open the block device when > __blkget_dev drops it and loop to restart label. Reset first_open to > false when looping. > > Signed-off-by: Michal Suchanek <msuchanek@xxxxxxx> Yeah, good catch. Thanks for the patch. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/block_dev.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/block_dev.c b/fs/block_dev.c > index 69bf2fb6f7cd..17e1231d5246 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -1560,7 +1560,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) > int ret; > int partno; > int perm = 0; > - bool first_open = false; > + bool first_open; > > if (mode & FMODE_READ) > perm |= MAY_READ; > @@ -1580,6 +1580,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) > restart: > > ret = -ENXIO; > + first_open = false; > disk = bdev_get_gendisk(bdev, &partno); > if (!disk) > goto out; > -- > 2.23.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR