On Fri, May 15, 2020 at 09:28:38PM +0530, Siddharth Chandrasekaran wrote:
On Fri, May 15, 2020 at 05:22:30PM +0200, Greg KH wrote:
On Fri, May 15, 2020 at 08:41:07PM +0530, Siddharth Chandrasekaran wrote:
> Hello,
>
> Lack of proper validation that cached inodes are free during allocation can,
> cause a crash in fs/xfs/xfs_icache.c (refer: CVE-2018-13093). To address this
> issue, I'm backporting upstream commit [1] to 4.4 and 4.9 stable trees
> (a backport of [1] to 4.14 already exists).
>
> Also, commit [1] references another commit [2] which added checks only to
> xfs_iget_cache_miss(). In this patch, those checks have been moved into a
> dedicated checker method and both xfs_iget_cache_miss() and
> xfs_iget_cache_hit() are made to call that method. This code reorg in commit
> [1], makes commit [2] redundant in the history of the 4.9 and 4.4 stable
> trees. So commit [2] is not being backported.
>
> -- Sid
>
> [1]: afca6c5b2595 ("xfs: validate cached inodes are free when allocated")
> [2]: ee457001ed6c ("xfs: catch inode allocation state mismatch corruption")
>
> change log:
> v2:
> - Reword cover letter.
> - Fix accidental worong patch that got mailed.
As the XFS maintainers want to see xfstests pass with any changes made,
have you done so for the 4.9 and 4.4 trees with this patch applied?
I haven't run them yet. I'll do so and get back with the results
shortly.
Hi Greg,
I am having some issue setting up my xfstests testing environment. On a
Ubuntu 20.04 LTS VM, I installed 4.9.223 kernel with this patch applied.
Then cloned xfstests-dev repository from [1] and setup the test
environment as explained in the top-level README file. After this, I did
the following:
- Added a new disk (/dev/sdb1) and created 2 partitions of (64 GB each).
- Formatted /dev/sdb1 to xfs and dropped a few kernel source tarballs
into to it.
- Copied local.config.example to local.config and modified it as:
export TEST_DEV=/dev/sdb1
export TEST_DIR=/mnt/t0
export SCRATCH_DEV=/dev/sdb2
export SCRATCH_MNT=/mnt/scratch
- Executed: sudo ./check -g all
When executing the tests, I observed multiple failures. In addition to
test failures, the testing script just froze after executing some some
test cases (more frequently test 269) when trying to perform a mount or
umount operation on either of the newly added partitions.
So I presumed the patch was buggy and reverted the change to re try the
test. Interestingly, that too failed and produced similar results. dmesg
is filled with xfs errors, with the most frequent being:
XFS (dm-0): metadata I/O error: block 0x3 ("xfs_trans_read_buf_map") error 5 numblks 1
obviously, I must be doing something wrong; I can try to dig deeper
figure it out myself but wanted to check with you first, if you can spot
something obviously wrong in what I'm doing.
Thanks!
-- Sid.
[1]: https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git