diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c index 003dc1dc2da35de1069f96ae30acb1f95fc21944..d4d4fdfac1a654ad627d8280c97e7718a73340ae 100644 --- a/fs/ext4/block_validity.c +++ b/fs/ext4/block_validity.c @@ -330,7 +330,8 @@ void ext4_release_system_zone(struct super_block *sb) { struct ext4_system_blocks *system_blks; - system_blks = rcu_dereference(EXT4_SB(sb)->system_blks); + system_blks = rcu_dereference_protected(EXT4_SB(sb)->system_blks, + lockdep_is_held(&sb->s_umount)); rcu_assign_pointer(EXT4_SB(sb)->system_blks, NULL); if (system_blks)