| From 558b413137123c701eda6e62d927bff476655e3c Mon Sep 17 00:00:00 2001 |
| From: Jan Kara <jack@suse.cz> |
| Date: Fri, 17 Jul 2009 10:40:01 -0400 |
| Subject: [PATCH 03/85] jbd2: Fail to load a journal if it is too short |
| |
| (cherry picked from commit f6f50e28f0cb8d7bcdfaacc83129f005dede11b1) |
| |
| Due to on disk corruption, it can happen that journal is too short. Fail |
| to load it in such case so that we don't oops somewhere later. |
| |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/jbd2/journal.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/fs/jbd2/journal.c |
| +++ b/fs/jbd2/journal.c |
| @@ -1187,6 +1187,12 @@ static int journal_reset(journal_t *jour |
| |
| first = be32_to_cpu(sb->s_first); |
| last = be32_to_cpu(sb->s_maxlen); |
| + if (first + JBD2_MIN_JOURNAL_BLOCKS > last + 1) { |
| + printk(KERN_ERR "JBD: Journal too short (blocks %llu-%llu).\n", |
| + first, last); |
| + journal_fail_superblock(journal); |
| + return -EINVAL; |
| + } |
| |
| journal->j_first = first; |
| journal->j_last = last; |