]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
libxfs: readahead of dir3 data blocks should use the read verifier
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 23 Aug 2015 23:21:01 +0000 (09:21 +1000)
committerDave Chinner <david@fromorbit.com>
Sun, 23 Aug 2015 23:21:01 +0000 (09:21 +1000)
In the dir3 data block readahead function, use the regular read
verifier to check the block's CRC and spot-check the block contents
instead of calling the spot-checking routine directly.  This prevents
corrupted directory data blocks from being read into the kernel, which
can lead to garbage ls output and directory loops (if say one of the
entries contains invalid characters).

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>
libxfs/xfs_dir2_data.c

index c475ba888b886acde48c016dcc6044f460875aaa..0c9f529fb6381c692f65ec98a024271c2c540e47 100644 (file)
@@ -250,7 +250,8 @@ xfs_dir3_data_reada_verify(
                return;
        case cpu_to_be32(XFS_DIR2_DATA_MAGIC):
        case cpu_to_be32(XFS_DIR3_DATA_MAGIC):
-               xfs_dir3_data_verify(bp);
+               bp->b_ops = &xfs_dir3_data_buf_ops;
+               bp->b_ops->verify_read(bp);
                return;
        default:
                xfs_buf_ioerror(bp, -EFSCORRUPTED);