linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] sh: cmpxchg: fix a  bit shift bug in big_endian os
@ 2016-04-19  6:58 Pan Xinhui
  2016-04-19 10:00 ` Michael S. Tsirkin
  2016-04-20  6:41 ` [PATCH V2]sh: " Pan Xinhui
  0 siblings, 2 replies; 5+ messages in thread
From: Pan Xinhui @ 2016-04-19  6:58 UTC (permalink / raw)
  To: linux-kernel; +Cc: ysato, dalias, mst, peterz, linux-sh

From: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>

Correct bitoff in big endian OS.

Fixes: 3226aad81aa6 ("sh: support 1 and 2 byte xchg")
Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
---
 arch/sh/include/asm/cmpxchg-xchg.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/sh/include/asm/cmpxchg-xchg.h b/arch/sh/include/asm/cmpxchg-xchg.h
index 7219719..1e881f5 100644
--- a/arch/sh/include/asm/cmpxchg-xchg.h
+++ b/arch/sh/include/asm/cmpxchg-xchg.h
@@ -21,7 +21,7 @@ static inline u32 __xchg_cmpxchg(volatile void *ptr, u32 x, int size)
 	int off = (unsigned long)ptr % sizeof(u32);
 	volatile u32 *p = ptr - off;
 #ifdef __BIG_ENDIAN
-	int bitoff = (sizeof(u32) - 1 - off) * BITS_PER_BYTE;
+	int bitoff = (sizeof(u32) - size - off) * BITS_PER_BYTE;
 #else
 	int bitoff = off * BITS_PER_BYTE;
 #endif
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-04-26 10:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-19  6:58 [PATCH] sh: cmpxchg: fix a bit shift bug in big_endian os Pan Xinhui
2016-04-19 10:00 ` Michael S. Tsirkin
2016-04-20  6:41 ` [PATCH V2]sh: " Pan Xinhui
2016-04-26  1:39   ` Rich Felker
2016-04-26 10:07     ` Pan Xinhui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).