[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1226851540-8032-5-git-send-email-tytso@mit.edu>
Date: Sun, 16 Nov 2008 11:05:24 -0500
From: Theodore Ts'o <tytso@....edu>
To: stable@...nel.org
Cc: Ext4 Developers List <linux-ext4@...r.kernel.org>,
Li Zefan <lizf@...fujitsu.com>, "Theodore Ts'o" <tytso@....edu>
Subject: [FOR-STABLE 04/20] ext4: add missing unlock in ext4_check_descriptors() on error path
From: Li Zefan <lizf@...fujitsu.com>
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 <lizf@...fujitsu.com>
Signed-off-by: "Theodore Ts'o" <tytso@....edu>
(cherry picked from commit 7ee1ec4ca30c6df8e989615cdaacb75f2af4fa6b)
---
fs/ext4/super.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 062b7c5..f98f9bb 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1626,8 +1626,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)
--
1.6.0.4.8.g36f27.dirty
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists