rtc: rx8010: select REGMAP_I2C
[linux-2.6-microblaze.git] / fs / reiserfs / journal.c
index 9edc8e2..0834b10 100644 (file)
@@ -2758,6 +2758,20 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
                goto free_and_return;
        }
 
+       /*
+        * Sanity check to see if journal first block is correct.
+        * If journal first block is invalid it can cause
+        * zeroing important superblock members.
+        */
+       if (!SB_ONDISK_JOURNAL_DEVICE(sb) &&
+           SB_ONDISK_JOURNAL_1st_BLOCK(sb) < SB_JOURNAL_1st_RESERVED_BLOCK(sb)) {
+               reiserfs_warning(sb, "journal-1393",
+                                "journal 1st super block is invalid: 1st reserved block %d, but actual 1st block is %d",
+                                SB_JOURNAL_1st_RESERVED_BLOCK(sb),
+                                SB_ONDISK_JOURNAL_1st_BLOCK(sb));
+               goto free_and_return;
+       }
+
        if (journal_init_dev(sb, journal, j_dev_name) != 0) {
                reiserfs_warning(sb, "sh-462",
                                 "unable to initialize journal device");