diff options
-rw-r--r-- | fs/jbd/journal.c | 8 | ||||
-rw-r--r-- | fs/jbd2/journal.c | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c index 45905ff762c9..70713d508a0f 100644 --- a/fs/jbd/journal.c +++ b/fs/jbd/journal.c @@ -1070,6 +1070,14 @@ static int journal_get_superblock(journal_t *journal) goto out; } + if (be32_to_cpu(sb->s_first) == 0 || + be32_to_cpu(sb->s_first) >= journal->j_maxlen) { + printk(KERN_WARNING + "JBD: Invalid start block of journal: %u\n", + be32_to_cpu(sb->s_first)); + goto out; + } + return 0; out: diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 17af879e6e9e..c00de9c10a0f 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -1183,6 +1183,14 @@ static int journal_get_superblock(journal_t *journal) goto out; } + if (be32_to_cpu(sb->s_first) == 0 || + be32_to_cpu(sb->s_first) >= journal->j_maxlen) { + printk(KERN_WARNING + "JBD2: Invalid start block of journal: %u\n", + be32_to_cpu(sb->s_first)); + goto out; + } + return 0; out: |