On Mon, Dec 07, 2020 at 02:19:14PM +0100, Christoph Hellwig wrote: > Only a single caller can end up in bdev_read_only, so move the check there. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > block/genhd.c | 3 --- > fs/super.c | 3 ++- > 2 files changed, 2 insertions(+), 4 deletions(-) > > diff --git a/block/genhd.c b/block/genhd.c > index 09ff6cef028729..c87013879b8650 100644 > --- a/block/genhd.c > +++ b/block/genhd.c > @@ -1445,11 +1445,8 @@ EXPORT_SYMBOL(set_disk_ro); > > int bdev_read_only(struct block_device *bdev) > { > - if (!bdev) > - return 0; > return bdev->bd_read_only; > } > - > EXPORT_SYMBOL(bdev_read_only); > > /* > diff --git a/fs/super.c b/fs/super.c > index 2c6cdea2ab2d9e..5a1f384ffc74f6 100644 > --- a/fs/super.c > +++ b/fs/super.c > @@ -865,7 +865,8 @@ int reconfigure_super(struct fs_context *fc) > > if (fc->sb_flags_mask & SB_RDONLY) { > #ifdef CONFIG_BLOCK > - if (!(fc->sb_flags & SB_RDONLY) && bdev_read_only(sb->s_bdev)) > + if (!(fc->sb_flags & SB_RDONLY) && sb->s_bdev && > + bdev_read_only(sb->s_bdev)) > return -EACCES; > #endif > > -- > 2.29.2 > Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> -- Ming