From 91ae46858096970745cb580d725f5bf9b6c8f59c Mon Sep 17 00:00:00 2001 From: "zhangyi (F)" Date: Thu, 13 May 2021 10:49:01 +0800 Subject: [PATCH] ext4: use ext4_sb_bread() instead of sb_bread() mainline inclusion from mainline-5.10-rc1 commit 0a846f496db1d3996341e140364aa58563d1ebe1 category: bugfix bugzilla: 51832 CVE: NA --------------------------- We have already remove open codes that invoke helpers provide by fs/buffer.c in all places reading metadata buffers. This patch switch to use ext4_sb_bread() to replace all sb_bread() helpers, which is ext4_read_bh() helper back end. Signed-off-by: zhangyi (F) Link: https://lore.kernel.org/r/20200924073337.861472-7-yi.zhang@huawei.com Signed-off-by: Theodore Ts'o Signed-off-by: yangerkun Reviewed-by: zhangyi (F) Signed-off-by: Yang Yingliang --- fs/ext4/indirect.c | 6 +++--- fs/ext4/resize.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c index 87bbbea02c74..cd3b4ebbbab3 100644 --- a/fs/ext4/indirect.c +++ b/fs/ext4/indirect.c @@ -1042,14 +1042,14 @@ static void ext4_free_branches(handle_t *handle, struct inode *inode, } /* Go read the buffer for the next level down */ - bh = sb_bread(inode->i_sb, nr); + bh = ext4_sb_bread(inode->i_sb, nr, 0); /* * A read failure? Report error and clear slot * (should be rare). */ - if (!bh) { - ext4_error_inode_block(inode, nr, EIO, + if (IS_ERR(bh)) { + ext4_error_inode_block(inode, nr, -PTR_ERR(bh), "Read failure"); continue; } diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 347388e7fae1..08d67f79aed7 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -1821,8 +1821,8 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, o_blocks_count + add, add); /* See if the device is actually as big as what was requested */ - bh = sb_bread(sb, o_blocks_count + add - 1); - if (!bh) { + bh = ext4_sb_bread(sb, o_blocks_count + add - 1, 0); + if (IS_ERR(bh)) { ext4_warning(sb, "can't read last block, resize aborted"); return -ENOSPC; } @@ -1950,8 +1950,8 @@ int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count) int meta_bg; /* See if the device is actually as big as what was requested */ - bh = sb_bread(sb, n_blocks_count - 1); - if (!bh) { + bh = ext4_sb_bread(sb, n_blocks_count - 1, 0); + if (IS_ERR(bh)) { ext4_warning(sb, "can't read last block, resize aborted"); return -ENOSPC; } -- GitLab