xfs: complain if we don't get nextents bmap records
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 5 Dec 2016 01:36:56 +0000 (12:36 +1100)
committerDave Chinner <david@fromorbit.com>
Mon, 5 Dec 2016 01:36:56 +0000 (12:36 +1100)
When reading into memory all extents of a btree-format inode fork,
complain if the number of extents we find is not the same as the number
of extents reported in the inode core.  This is needed to stop an IO
action from accessing the garbage areas of the in-core fork.

[dchinner: removed redundant assert]

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_bmap.c

index 23aa70b2790cfaff0222279e4cce5e034c55175d..829ad632533b80eac845008972f4a2d24a15bf3a 100644 (file)
@@ -1377,8 +1377,9 @@ xfs_bmap_read_extents(
                        return error;
                block = XFS_BUF_TO_BLOCK(bp);
        }
+       if (i != XFS_IFORK_NEXTENTS(ip, whichfork))
+               return -EFSCORRUPTED;
        ASSERT(i == xfs_iext_count(ifp));
-       ASSERT(i == XFS_IFORK_NEXTENTS(ip, whichfork));
        XFS_BMAP_TRACE_EXLIST(ip, i, whichfork);
        return 0;
 error0: