Found this problem while enabling queued rwlock on SPARC.
The parameter CONFIG_CPU_BIG_ENDIAN is used to clear the
specific byte in qrwlock structure. Without this parameter,
we clear the wrong byte. Here is the code.

static inline u8 *__qrwlock_write_byte(struct qrwlock *lock)
 {
        return (u8 *)lock + 3 * IS_BUILTIN(CONFIG_CPU_BIG_ENDIAN);
 }

Define CPU_BIG_ENDIAN for SPARC to fix it.

Signed-off-by: Babu Moger <[email protected]>
Reviewed-by: HÃ¥kon Bugge <[email protected]>
Reviewed-by: Jane Chu <[email protected]>
Reviewed-by: Shannon Nelson <[email protected]>
Reviewed-by: Vijay Kumar <[email protected]>
---
 arch/sparc/Kconfig |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 908f019..2f58c16 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -92,6 +92,10 @@ config ARCH_DEFCONFIG
 config ARCH_PROC_KCORE_TEXT
        def_bool y
 
+config CPU_BIG_ENDIAN
+       bool
+       default y if SPARC
+
 config ARCH_ATU
        bool
        default y if SPARC64
-- 
1.7.1

Reply via email to