提交 6ab2224e 编写于 作者: Y Ye Bin 提交者: Cheng Jian

Revert "ext4: Protect superblock modifications with a buffer lock"

hulk inclusion
category: bugfix
bugzilla: 46758
CVE: NA

-----------------------------------------------

This reverts commit eed1f8e19630ff89b2d877b660cda03bef92e85b.
Signed-off-by: NYe Bin <yebin10@huawei.com>
Reviewed-by: Nzhangyi (F) <yi.zhang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NCheng Jian <cj.chengjian@huawei.com>
上级 200b907d
......@@ -361,6 +361,7 @@ int __ext4_handle_dirty_super(const char *where, unsigned int line,
struct buffer_head *bh = EXT4_SB(sb)->s_sbh;
int err = 0;
ext4_superblock_csum_set(sb);
if (ext4_handle_valid(handle)) {
err = jbd2_journal_dirty_metadata(handle, bh);
if (err)
......
......@@ -434,7 +434,6 @@ static int ext4_sample_last_mounted(struct super_block *sb,
goto out_journal;
strlcpy(sbi->s_es->s_last_mounted, cp,
sizeof(sbi->s_es->s_last_mounted));
ext4_superblock_csum_set(sb);
ext4_handle_dirty_super(handle, sb);
out_journal:
ext4_journal_stop(handle);
......
......@@ -5403,7 +5403,6 @@ static int ext4_do_update_inode(handle_t *handle,
if (err)
goto out_brelse;
ext4_set_feature_large_file(sb);
ext4_superblock_csum_set(sb);
ext4_handle_sync(handle);
err = ext4_handle_dirty_super(handle, sb);
}
......
......@@ -2856,10 +2856,7 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode)
(le32_to_cpu(sbi->s_es->s_inodes_count))) {
/* Insert this inode at the head of the on-disk orphan list */
NEXT_ORPHAN(inode) = le32_to_cpu(sbi->s_es->s_last_orphan);
lock_buffer(sbi->s_sbh);
sbi->s_es->s_last_orphan = cpu_to_le32(inode->i_ino);
ext4_superblock_csum_set(sb);
unlock_buffer(sbi->s_sbh);
dirty = true;
}
list_add(&EXT4_I(inode)->i_orphan, &sbi->s_orphan);
......@@ -2942,10 +2939,7 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode)
mutex_unlock(&sbi->s_orphan_lock);
goto out_brelse;
}
lock_buffer(sbi->s_sbh);
sbi->s_es->s_last_orphan = cpu_to_le32(ino_next);
ext4_superblock_csum_set(inode->i_sb);
unlock_buffer(sbi->s_sbh);
mutex_unlock(&sbi->s_orphan_lock);
err = ext4_handle_dirty_super(handle, inode->i_sb);
} else {
......
......@@ -901,7 +901,6 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
ext4_kvfree_array_rcu(o_group_desc);
le16_add_cpu(&es->s_reserved_gdt_blocks, -1);
ext4_superblock_csum_set(sb);
err = ext4_handle_dirty_super(handle, sb);
if (err)
ext4_std_error(sb, err);
......@@ -1424,7 +1423,6 @@ static void ext4_update_super(struct super_block *sb,
* active. */
ext4_r_blocks_count_set(es, ext4_r_blocks_count(es) +
reserved_blocks);
ext4_superblock_csum_set(sb);
/* Update the free space counts */
percpu_counter_add(&sbi->s_freeclusters_counter,
......@@ -1723,7 +1721,6 @@ static int ext4_group_extend_no_check(struct super_block *sb,
ext4_blocks_count_set(es, o_blocks_count + add);
ext4_free_blocks_count_set(es, ext4_free_blocks_count(es) + add);
ext4_superblock_csum_set(sb);
ext4_debug("freeing blocks %llu through %llu\n", o_blocks_count,
o_blocks_count + add);
/* We add the blocks to the bitmap and set the group need init bit */
......@@ -1885,7 +1882,6 @@ static int ext4_convert_meta_bg(struct super_block *sb, struct inode *inode)
ext4_set_feature_meta_bg(sb);
sbi->s_es->s_first_meta_bg =
cpu_to_le32(num_desc_blocks(sb, sbi->s_groups_count));
ext4_superblock_csum_set(sb);
err = ext4_handle_dirty_super(handle, sb);
if (err) {
......
......@@ -791,7 +791,6 @@ static void ext4_xattr_update_super_block(handle_t *handle,
BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get_write_access");
if (ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh) == 0) {
ext4_set_feature_xattr(sb);
ext4_superblock_csum_set(sb);
ext4_handle_dirty_super(handle, sb);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册