Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e0bd492 authored by Darrick J. Wong's avatar Darrick J. Wong Committed by root
Browse files

xfs: fix endianness error when checking log block crc on big endian platforms



Since the checksum function and the field are both __le32, don't
perform endian conversion when comparing the two.  This fixes mount
failures on ppc64.

Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 36f90b0a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4491,7 +4491,7 @@ xlog_recover_process(
	 * know precisely what failed.
	 */
	if (pass == XLOG_RECOVER_CRCPASS) {
		if (rhead->h_crc && crc != le32_to_cpu(rhead->h_crc))
		if (rhead->h_crc && crc != rhead->h_crc)
			return -EFSBADCRC;
		return 0;
	}
@@ -4502,7 +4502,7 @@ xlog_recover_process(
	 * zero CRC check prevents warnings from being emitted when upgrading
	 * the kernel from one that does not add CRCs by default.
	 */
	if (crc != le32_to_cpu(rhead->h_crc)) {
	if (crc != rhead->h_crc) {
		if (rhead->h_crc || xfs_sb_version_hascrc(&log->l_mp->m_sb)) {
			xfs_alert(log->l_mp,
		"log record CRC mismatch: found 0x%x, expected 0x%x.",