Selaa lähdekoodia

jbd2: Fail to load a journal if it is too short

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>
Jan Kara 16 vuotta sitten
vanhempi
commit
f6f50e28f0
1 muutettua tiedostoa jossa 6 lisäystä ja 0 poistoa
  1. 6 0
      fs/jbd2/journal.c

+ 6 - 0
fs/jbd2/journal.c

@@ -1187,6 +1187,12 @@ static int journal_reset(journal_t *journal)
 
 
 	first = be32_to_cpu(sb->s_first);
 	first = be32_to_cpu(sb->s_first);
 	last = be32_to_cpu(sb->s_maxlen);
 	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_first = first;
 	journal->j_last = last;
 	journal->j_last = last;