Message ID | 159950113638.567790.12521493655366784663.stgit@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfs_repair: more fuzzer fixes | expand |
On Mon, Sep 07, 2020 at 10:52:16AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > If reading the root block of an extended attribute structure fails due > to a corruption error, we should junk the block since we know it's bad. > There's no point in moving on to the (rather insufficient) checks in the > attr code. > > Found by fuzzing hdr.freemap[1].base = ones in xfs/400. Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/repair/attr_repair.c b/repair/attr_repair.c index 6cec0f7075d5..d92909e1c831 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -1107,6 +1107,15 @@ process_longform_attr( ino); return 1; } + + if (bp->b_error == -EFSCORRUPTED) { + do_warn( + _("corrupt block 0 of inode %" PRIu64 " attribute fork\n"), + ino); + libxfs_buf_relse(bp); + return 1; + } + if (bp->b_error == -EFSBADCRC) (*repair)++;