lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20220810013442.3474533-1-yebin10@huawei.com> Date: Wed, 10 Aug 2022 09:34:42 +0800 From: Ye Bin <yebin10@...wei.com> To: <tytso@....edu>, <adilger.kernel@...ger.ca>, <linux-ext4@...r.kernel.org> CC: <linux-kernel@...r.kernel.org>, <jack@...e.cz>, Ye Bin <yebin10@...wei.com> Subject: [PATCH RFC] jbd2: detect old record when do journal scan As https://github.com/tytso/e2fsprogs/issues/120 describe tune2fs do not update j_tail_sequence when do journal recovery. This maybe recover old journal record, then will lead to file system corruption. To avoid file system corruption in this case, if detect current transaction's commit time earlier than previous transaction's commit time when do journal scan, just return error. Signed-off-by: Ye Bin <yebin10@...wei.com> --- fs/jbd2/recovery.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c index f548479615c6..f3def21a96a5 100644 --- a/fs/jbd2/recovery.c +++ b/fs/jbd2/recovery.c @@ -812,8 +812,17 @@ static int do_one_pass(journal_t *journal, break; } } - if (pass == PASS_SCAN) + if (pass == PASS_SCAN) { + if (commit_time < last_trans_commit_time) { + pr_err("JBD2: old journal record found " + "in transaction %u\n", + next_commit_ID); + err = -EFSBADCRC; + brelse(bh); + goto failed; + } last_trans_commit_time = commit_time; + } brelse(bh); next_commit_ID++; continue; -- 2.31.1
Powered by blists - more mailing lists