Commit e34d3e74 authored by Brian Foster's avatar Brian Foster Committed by Darrick J. Wong
Browse files

xfs: always check magic values in on-disk byte order



Most verifiers that check on-disk magic values convert the CPU
endian magic value constant to disk endian to facilitate compile
time optimization of the byte swap and reduce the need for runtime
byte swaps in buffer verifiers. Several buffer verifiers do not
follow this pattern. Update those verifiers for consistency.

Also fix up a random typo in the inode readahead verifier name.

Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 75d02303
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -570,7 +570,7 @@ xfs_agfl_verify(

	if (!uuid_equal(&agfl->agfl_uuid, &mp->m_sb.sb_meta_uuid))
		return __this_address;
	if (be32_to_cpu(agfl->agfl_magicnum) != XFS_AGFL_MAGIC)
	if (agfl->agfl_magicnum != cpu_to_be32(XFS_AGFL_MAGIC))
		return __this_address;
	/*
	 * during growfs operations, the perag is not fully initialised,
+2 −2
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ xfs_attr3_leaf_verify(
	if (xfs_sb_version_hascrc(&mp->m_sb)) {
		struct xfs_da3_node_hdr *hdr3 = bp->b_addr;

		if (ichdr.magic != XFS_ATTR3_LEAF_MAGIC)
		if (hdr3->info.hdr.magic != cpu_to_be16(XFS_ATTR3_LEAF_MAGIC))
			return __this_address;

		if (!uuid_equal(&hdr3->info.uuid, &mp->m_sb.sb_meta_uuid))
@@ -261,7 +261,7 @@ xfs_attr3_leaf_verify(
		if (!xfs_log_check_lsn(mp, be64_to_cpu(hdr3->info.lsn)))
			return __this_address;
	} else {
		if (ichdr.magic != XFS_ATTR_LEAF_MAGIC)
		if (leaf->hdr.info.magic != cpu_to_be16(XFS_ATTR_LEAF_MAGIC))
			return __this_address;
	}
	/*
+2 −2
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ xfs_da3_node_verify(
	if (xfs_sb_version_hascrc(&mp->m_sb)) {
		struct xfs_da3_node_hdr *hdr3 = bp->b_addr;

		if (ichdr.magic != XFS_DA3_NODE_MAGIC)
		if (hdr3->info.hdr.magic != cpu_to_be16(XFS_DA3_NODE_MAGIC))
			return __this_address;

		if (!uuid_equal(&hdr3->info.uuid, &mp->m_sb.sb_meta_uuid))
@@ -142,7 +142,7 @@ xfs_da3_node_verify(
		if (!xfs_log_check_lsn(mp, be64_to_cpu(hdr3->info.lsn)))
			return __this_address;
	} else {
		if (ichdr.magic != XFS_DA_NODE_MAGIC)
		if (hdr->hdr.info.magic != cpu_to_be16(XFS_DA_NODE_MAGIC))
			return __this_address;
	}
	if (ichdr.level == 0)
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ const struct xfs_buf_ops xfs_inode_buf_ops = {
};

const struct xfs_buf_ops xfs_inode_buf_ra_ops = {
	.name = "xxfs_inode_ra",
	.name = "xfs_inode_ra",
	.verify_read = xfs_inode_buf_readahead_verify,
	.verify_write = xfs_inode_buf_write_verify,
};
+2 −1
Original line number Diff line number Diff line
@@ -225,10 +225,11 @@ xfs_validate_sb_common(
	struct xfs_buf		*bp,
	struct xfs_sb		*sbp)
{
	struct xfs_dsb		*dsb = XFS_BUF_TO_SBP(bp);
	uint32_t		agcount = 0;
	uint32_t		rem;

	if (sbp->sb_magicnum != XFS_SB_MAGIC) {
	if (dsb->sb_magicnum != cpu_to_be32(XFS_SB_MAGIC)) {
		xfs_warn(mp, "bad magic number");
		return -EWRONGFS;
	}