| From a92c0aaba8cb051108f95c32733245e76851a55e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 8 Nov 2020 16:32:41 -0800 |
| Subject: xfs: strengthen rmap record flags checking |
| |
| From: Darrick J. Wong <darrick.wong@oracle.com> |
| |
| [ Upstream commit 498fe261f0d6d5189f8e11d283705dd97b474b54 ] |
| |
| We always know the correct state of the rmap record flags (attr, bmbt, |
| unwritten) so check them by direct comparison. |
| |
| Fixes: d852657ccfc0 ("xfs: cross-reference reverse-mapping btree") |
| Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> |
| Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/xfs/scrub/bmap.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/fs/xfs/scrub/bmap.c b/fs/xfs/scrub/bmap.c |
| index b05d65fd360b3..cf005e18d6186 100644 |
| --- a/fs/xfs/scrub/bmap.c |
| +++ b/fs/xfs/scrub/bmap.c |
| @@ -225,13 +225,13 @@ xchk_bmap_xref_rmap( |
| * which doesn't track unwritten state. |
| */ |
| if (owner != XFS_RMAP_OWN_COW && |
| - irec->br_state == XFS_EXT_UNWRITTEN && |
| - !(rmap.rm_flags & XFS_RMAP_UNWRITTEN)) |
| + !!(irec->br_state == XFS_EXT_UNWRITTEN) != |
| + !!(rmap.rm_flags & XFS_RMAP_UNWRITTEN)) |
| xchk_fblock_xref_set_corrupt(info->sc, info->whichfork, |
| irec->br_startoff); |
| |
| - if (info->whichfork == XFS_ATTR_FORK && |
| - !(rmap.rm_flags & XFS_RMAP_ATTR_FORK)) |
| + if (!!(info->whichfork == XFS_ATTR_FORK) != |
| + !!(rmap.rm_flags & XFS_RMAP_ATTR_FORK)) |
| xchk_fblock_xref_set_corrupt(info->sc, info->whichfork, |
| irec->br_startoff); |
| if (rmap.rm_flags & XFS_RMAP_BMBT_BLOCK) |
| -- |
| 2.27.0 |
| |