Patch "ext4: check for extents that wrap around" has been added to the 4.6-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ext4: check for extents that wrap around
to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ext4-check-for-extents-that-wrap-around.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6Mon Sep 17 00:00:00 2001
From: Vegard Nossum <[email protected]>
Date: Thu, 30 Jun 2016 11:53:46 -0400
Subject: ext4: check for extents that wrap around
From: Vegard Nossum <[email protected]>
commit f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6 upstream.
An extent with lblock = 4294967295 and len = 1 will pass the ext4_valid_extent() test:
ext4_lblk_t last = lblock + len - 1; if (len == 0 || lblock > last) return 0;
since last = 4294967295 + 1 - 1 = 4294967295. This would later trigger the BUG_ON(es->es_lblk + es->es_len < es->es_lblk) in ext4_es_end().
We can simplify it by removing the - 1 altogether and changing the test to use lblock + len <= lblock, since now if len = 0, then lblock + 0 == lblock and it fails, and if len > 0 then lblock + len > lblock in order to pass (i.e. it doesn't overflow).
--- fs/ext4/extents.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
fs/ext4/extents.c +6 -2
@@ -376,9 +376,13 @@ static int ext4_valid_extent(struct inodext4_fsblk_t block =ext4_ext_pblock (ext);int len =ext4_ext_get_actual_len (ext);ext4_lblk_t lblock =le32_to_cpu (ext->ee_block); -ext4_lblk_t last = lblock + len -1 ; -if (len ==0 || lblock > last) +/* +* We allow neither: +* - zero length +* - overflow/wrap-around +*/ +if (lblock + len <= lblock)return 0 ;return ext4_data_block_valid (EXT4_SB (inode->i_sb), block, len); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/ext4-short-cut-orphan-cleanup-on-error.patch queue-4.6/block-fix-use-after-free-in-seq-file.patch queue-4.6/ext4-check-for-extents-that-wrap-around.patch queue-4.6/net-irda-fix-null-pointer-dereference-on-memory-allocation-failure.patch queue-4.6/ext4-validate-s_reserved_gdt_blocks-on-mount.patch queue-4.6/ext4-don-t-call-ext4_should_journal_data-on-the-journal-inode.patch