From: Li Zefan Date: Mon, 8 Sep 2008 14:47:19 +0000 (-0400) Subject: ext4: add missing unlock in ext4_check_descriptors() on error path X-Git-Tag: firefly_0821_release~17817^2~23 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7ee1ec4ca30c6df8e989615cdaacb75f2af4fa6b;p=firefly-linux-kernel-4.4.55.git ext4: add missing unlock in ext4_check_descriptors() on error path If there group descriptors are corrupted we need unlock the block group lock before returning from the function; else we will oops when freeing a spinlock which is still being held. Signed-off-by: Li Zefan Signed-off-by: "Theodore Ts'o" --- diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 64e1c21eb5d2..8175318abd84 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1623,8 +1623,10 @@ static int ext4_check_descriptors(struct super_block *sb) "Checksum for group %lu failed (%u!=%u)\n", i, le16_to_cpu(ext4_group_desc_csum(sbi, i, gdp)), le16_to_cpu(gdp->bg_checksum)); - if (!(sb->s_flags & MS_RDONLY)) + if (!(sb->s_flags & MS_RDONLY)) { + spin_unlock(sb_bgl_lock(sbi, i)); return 0; + } } spin_unlock(sb_bgl_lock(sbi, i)); if (!flexbg_flag)