Patch "udf: limit the maximum number of indirect extents in a row" has been added to the 3.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
udf: limit the maximum number of indirect extents in a row
to the 3.14-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:
udf-limit-the-maximum-number-of-indirect-extents-in-a-row.patch
and it can be found in the queue-3.14 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
b0918d9f476a8434b055e362b83fa4fd1d462c3fMon Sep 17 00:00:00 2001
From: Vegard Nossum <[email protected]>
Date: Fri, 11 Dec 2015 15:54:16 +0100
Subject: udf: limit the maximum number of indirect extents in a row
From: Vegard Nossum <[email protected]>
commit b0918d9f476a8434b055e362b83fa4fd1d462c3f upstream.
udf_next_aext() just follows extent pointers while extents are marked as indirect. This can loop forever for corrupted filesystem. Limit number the of indirect extents we are willing to follow in a row.
[JK: Updated changelog, limit, style]
--- fs/udf/inode.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
fs/udf/inode.c +15 -0
@@ -2062,14 +2062,29 @@ void udf_write_aext(struct inode *inode, epos->offset += adsize; } +/* +* Only 1 indirect extent in a row really makes sense but allow upto 16 in case +* someone does some weird stuff. +*/ +#define UDF_MAX_INDIR_EXTS 16 +int8_t udf_next_aext (struct inode *inode,struct extent_position *epos,struct kernel_lb_addr *eloc,uint32_t *elen,int inc) {int8_t etype; +unsigned int indirections =0 ;while ((etype =udf_current_aext (inode, epos, eloc, elen, inc)) == (EXT_NEXT_EXTENT_ALLOCDECS >>30 )) {int block; + +if (++indirections >UDF_MAX_INDIR_EXTS ) { +udf_err (inode->i_sb, +"too many indirect extents in inode %lu\n" , + inode->i_ino); +return -1 ; + } + epos->block = *eloc; epos->offset =sizeof (struct allocExtDesc );brelse (epos->bh);
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/udf-limit-the-maximum-number-of-indirect-extents-in-a-row.patch