| To: | david@xxxxxxxxxxxxx, darrick.wong@xxxxxxxxxx |
|---|---|
| Subject: | [PATCH 01/10] libxfs: readahead of dir3 data blocks should use the read verifier |
| From: | "Darrick J. Wong" <darrick.wong@xxxxxxxxxx> |
| Date: | Fri, 14 Aug 2015 18:43:44 -0700 |
| Cc: | xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <20150815014338.1839.37405.stgit@xxxxxxxxxxxxxxxx> |
| References: | <20150815014338.1839.37405.stgit@xxxxxxxxxxxxxxxx> |
| User-agent: | StGit/0.17.1-dirty |
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@xxxxxxxxxx>
---
libxfs/xfs_dir2_data.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libxfs/xfs_dir2_data.c b/libxfs/xfs_dir2_data.c
index c475ba8..466e096 100644
--- a/libxfs/xfs_dir2_data.c
+++ b/libxfs/xfs_dir2_data.c
@@ -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_block_buf_ops;
+ bp->b_ops->verify_read(bp);
return;
default:
xfs_buf_ioerror(bp, -EFSCORRUPTED);
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 00/10] xfsprogs August 2015 patchbomb, Darrick J. Wong |
|---|---|
| Next by Date: | [PATCH 02/10] xfs_db: don't crash on a corrupt inode, Darrick J. Wong |
| Previous by Thread: | [PATCH 00/10] xfsprogs August 2015 patchbomb, Darrick J. Wong |
| Next by Thread: | Re: [PATCH 01/10] libxfs: readahead of dir3 data blocks should use the read verifier, Eric Sandeen |
| Indexes: | [Date] [Thread] [Top] [All Lists] |