Re: [PATCH 27/29] ntfs: use sb_bdev_nr_blocks

Kees Cook
2021-10-13T09:23:47Z

On Wed, Oct 13, 2021 at 07:10:40AM +0200, Christoph Hellwig wrote:
> Use the sb_bdev_nr_blocks helper instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> fs/ntfs/super.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
> index 0d7e948cb29c9..5ae8de09b271b 100644
> --- a/fs/ntfs/super.c
> +++ b/fs/ntfs/super.c
> @@ -2772,13 +2772,12 @@ static int ntfs_fill_super(struct super_block *sb, void *opt, const int silent)
> ntfs_debug("Set device block size to %i bytes (block size bits %i).",
> blocksize, sb->s_blocksize_bits);
> /* Determine the size of the device in units of block_size bytes. */
> - if (!i_size_read(sb->s_bdev->bd_inode)) {
> + vol->nr_blocks = sb_bdev_nr_blocks(sb);
> + if (!vol->nr_blocks) {

I might be worth mentioning in the commit log why this is safe (i.e. the
"side effect" of the assignment doesn't need to be delayed since it will
be thrown away in the failure path).

> if (!silent)
> ntfs_error(sb, "Unable to determine device size.");
> goto err_out_now;
> }
> - vol->nr_blocks = i_size_read(sb->s_bdev->bd_inode) >>
> - sb->s_blocksize_bits;
> /* Read the boot sector and return unlocked buffer head to it. */
> if (!(bh = read_ntfs_boot_sector(sb, silent))) {
> if (!silent)
> @@ -2816,8 +2815,7 @@ static int ntfs_fill_super(struct super_block *sb, void *opt, const int silent)
> goto err_out_now;
> }
> BUG_ON(blocksize != sb->s_blocksize);
> - vol->nr_blocks = i_size_read(sb->s_bdev->bd_inode) >>
> - sb->s_blocksize_bits;
> + vol->nr_blocks = sb_bdev_nr_blocks(sb);
> ntfs_debug("Changed device block size to %i bytes (block size "
> "bits %i) to match volume sector size.",
> blocksize, sb->s_blocksize_bits);

Reviewed-by: Kees Cook <keescook@chromium.org>

> --
> 2.30.2
>

--
Kees Cook