powerpc: Explicitly reverse bytes when checking for byte reversal
authorBenjamin Gray <bgray@linux.ibm.com>
Wed, 11 Oct 2023 05:37:02 +0000 (16:37 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 19 Oct 2023 06:12:47 +0000 (17:12 +1100)
Sparse reports an invalid endian cast here. The code is written for
big endian platforms, so le32_to_cpu() acts as a byte reversal.

This file is checked by sparse on a little endian build though, so
replace the reverse function with the dedicated swab32() function to
better express the intent of the code.

Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231011053711.93427-4-bgray@linux.ibm.com
arch/powerpc/sysdev/mpic.c

index ba287abcb008b9a5a4459e1773dc6b0a78ef75a2..dabbdd356664cdf5bf1f7eb3d07a9c54795ab721 100644 (file)
@@ -355,7 +355,7 @@ static void __init mpic_test_broken_ipi(struct mpic *mpic)
        mpic_write(mpic->gregs, MPIC_INFO(GREG_IPI_VECTOR_PRI_0), MPIC_VECPRI_MASK);
        r = mpic_read(mpic->gregs, MPIC_INFO(GREG_IPI_VECTOR_PRI_0));
 
-       if (r == le32_to_cpu(MPIC_VECPRI_MASK)) {
+       if (r == swab32(MPIC_VECPRI_MASK)) {
                printk(KERN_INFO "mpic: Detected reversed IPI registers\n");
                mpic->flags |= MPIC_BROKEN_IPI;
        }