mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
jbd2: fix integer underflow in jbd2_journal_initialize_fast_commit()
jbd2_journal_initialize_fast_commit() validates journal capacity by checking (journal->j_last - num_fc_blks < JBD2_MIN_JOURNAL_BLOCKS). Both j_last and num_fc_blks are unsigned, so when num_fc_blks exceeds j_last the subtraction wraps to a large value, bypassing the bounds check. The resulting underflow corrupts j_last, j_fc_first, and j_free, leading to journal abort. Fix by checking num_fc_blks against j_last before the subtraction, returning -EFSCORRUPTED. Fixes:6866d7b3f2("ext4 / jbd2: add fast commit initialization") Reported-by: Yuhao Jiang <danisjiang@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Junrui Luo <moonafterrain@outlook.com> Fixes:e029c5f279("ext4: make num of fast commit blocks configurable") Reviewed-by: Baokun Li <libaokun@linux.alibaba.com> Fixes:e029c5f279("ext4: make num of fast commit blocks configurable") Reviewed-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://patch.msgid.link/SYBPR01MB7881663C927DE9D7BBF4D1DFAF062@SYBPR01MB7881.ausprd01.prod.outlook.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
8b3bc93fee
commit
289a2ca0c9
|
|
@ -2263,6 +2263,8 @@ jbd2_journal_initialize_fast_commit(journal_t *journal)
|
|||
unsigned long long num_fc_blks;
|
||||
|
||||
num_fc_blks = jbd2_journal_get_num_fc_blks(sb);
|
||||
if (num_fc_blks > journal->j_last)
|
||||
return -EFSCORRUPTED;
|
||||
if (journal->j_last - num_fc_blks < JBD2_MIN_JOURNAL_BLOCKS)
|
||||
return -ENOSPC;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user