libxfs: bad magic number should set da block buffer error
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 28 Aug 2015 04:50:03 +0000 (14:50 +1000)
committerDave Chinner <david@fromorbit.com>
Fri, 28 Aug 2015 04:50:03 +0000 (14:50 +1000)
If xfs_da3_node_read_verify() doesn't recognize the magic number of a
buffer it's just read, set the buffer error to -EFSCORRUPTED so that
the error can be sent up to userspace.  Without this patch we'll
notice the bad magic eventually while trying to traverse or change
the block, but we really ought to fail early in the verifier.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/libxfs/xfs_da_btree.c

index 2385f8cd08ab9f1cdf19ad3a9a8473a5e4e34eb3..8951e34ab76a4a026db7606cdda37e16dd1bd8df 100644 (file)
@@ -233,6 +233,7 @@ xfs_da3_node_read_verify(
                        bp->b_ops->verify_read(bp);
                        return;
                default:
+                       xfs_buf_ioerror(bp, -EFSCORRUPTED);
                        break;
        }