FAILED: patch "[PATCH] ext4: always verify the magic number in xattr blocks" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
513f86d73855ce556ea9522b6bfd79f87356dc3aMon Sep 17 00:00:00 2001
From: Theodore Ts'o <[email protected]>
Date: Wed, 13 Jun 2018 00:51:28 -0400
Subject: [PATCH] ext4: always verify the magic number in xattr blocks
If there an inode points to a block which is also some other type of metadata block (such as a block allocation bitmap), the buffer_verified flag can be set when it was validated as that other metadata block type; however, it would make a really terrible external attribute block. The reason why we use the verified flag is to avoid constantly reverifying the block. However, it doesn't take much overhead to make sure the magic number of the xattr block is correct, and this will avoid potential crashes.
This addresses CVE-2018-10879.
https://bugzilla.kernel.org/show_bug.cgi?id=200001
fs/ext4/xattr.c +3 -3
@@ -230,12 +230,12 @@ __ext4_xattr_check_block(struct inode *inode, struct buffer_head *bh, {int error = -EFSCORRUPTED ; -if (buffer_verified (bh)) -return 0 ; -if (BHDR (bh)->h_magic !=cpu_to_le32 (EXT4_XATTR_MAGIC ) ||BHDR (bh)->h_blocks !=cpu_to_le32 (1 )) goto errout; +if (buffer_verified (bh)) +return 0 ; + error = -EFSBADCRC ;if (!ext4_xattr_block_csum_verify (inode, bh)) goto errout;