Patch "xfs: handle error if xfs_btree_get_bufs fails" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
xfs: handle error if xfs_btree_get_bufs fails
to the 4.13-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:
xfs-handle-error-if-xfs_btree_get_bufs-fails.patch
and it can be found in the queue-4.13 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
93e8befc17f6d6ea92b0aee3741ceac8bca4590fMon Sep 17 00:00:00 2001
From: Eric Sandeen <[email protected]>
Date: Mon, 9 Oct 2017 21:08:06 -0700
Subject: xfs: handle error if xfs_btree_get_bufs fails
From: Eric Sandeen <[email protected]>
commit 93e8befc17f6d6ea92b0aee3741ceac8bca4590f upstream.
Jason reported that a corrupted filesystem failed to replay the log with a metadata block out of bounds warning:
XFS (dm-2): _xfs_buf_find: Block out of range: block 0x80270fff8, EOFS 0x9c40000
_xfs_buf_find() and xfs_btree_get_bufs() return NULL if that happens, and then when xfs_alloc_fix_freelist() calls xfs_trans_binval() on that NULL bp, we oops with:
BUG: unable to handle kernel NULL pointer dereference at 00000000000000f8
We don't handle _xfs_buf_find errors very well, every caller higher up the stack gets to guess at why it failed. But we should at least handle it somehow, so return EFSCORRUPTED here.
--- fs/xfs/libxfs/xfs_alloc.c | 8 ++++++++ 1 file changed, 8 insertions(+)
fs/xfs/libxfs/xfs_alloc.c +8 -0
@@ -1584,6 +1584,10 @@ xfs_alloc_ag_vextent_small( bp =xfs_btree_get_bufs (args->mp, args->tp, args->agno, fbno,0 ); +if (!bp) { + error = -EFSCORRUPTED ; + goto error0; + }xfs_trans_binval (args->tp, bp); } args->len =1 ;
@@ -2141,6 +2145,10 @@ xfs_alloc_fix_freelist(if (error) goto out_agbp_relse; bp =xfs_btree_get_bufs (mp, tp, args->agno, bno,0 ); +if (!bp) { + error = -EFSCORRUPTED ; + goto out_agbp_relse; + }xfs_trans_binval (tp, bp); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/xfs-handle-error-if-xfs_btree_get_bufs-fails.patch