diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index f9ac7dfd93bf0c642c862928a35d6bd5775d269b..a589b7f79558261a912f7fc73d0e7bf6805b3507 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -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)
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 1703871fa2d0f1352d0e86c9c524fbe6907aa151..52d155b4e733416f816d7d8dd0408f1e44171e68 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -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);
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5a4baa20e99bf068f91f90d8e3222fb1e454ddfd..34c302f11aa6a003b4fd84e8db6d444506a112c7 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -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);
 	}
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 34b26dacbbe58e09dba195abe1021ed18f9085f1..c51156abeec4d8c0e982694a270968b7e2fc3d5c 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -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 {
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index c2e007d836e4743fbb35f2c57b8d2e7bcf27e7db..6a0c5c880354a013669524c8a63abfe7478a7f45 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -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) {
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index ae029dccebc1c314b00b699e7a04835c1804c0ef..24cf730ba6b0250e5c37c0368a337b5d34b6a80e 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -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);
 	}
 }