asm-generic: Fix 32 bit __generic_cmpxchg_local
[ Upstream commit d93cca2f3109f88c94a32d3322ec8b2854a9c339 ] Commit656e9007ef
("asm-generic: avoid __generic_cmpxchg_local warnings") introduced a typo that means the code is incorrect for 32 bit values. It will work fine for postive numbers, but will fail for negative numbers on a system where longs are 64 bit. Fixes:656e9007ef
("asm-generic: avoid __generic_cmpxchg_local warnings") Signed-off-by: David McKay <david.mckay@codasip.com> Signed-off-by: Stuart Menefy <stuart.menefy@codasip.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
75aa038d9f
commit
6e007fac81
|
@ -34,7 +34,7 @@ static inline unsigned long __generic_cmpxchg_local(volatile void *ptr,
|
|||
*(u16 *)ptr = (new & 0xffffu);
|
||||
break;
|
||||
case 4: prev = *(u32 *)ptr;
|
||||
if (prev == (old & 0xffffffffffu))
|
||||
if (prev == (old & 0xffffffffu))
|
||||
*(u32 *)ptr = (new & 0xffffffffu);
|
||||
break;
|
||||
case 8: prev = *(u64 *)ptr;
|
||||
|
|
Loading…
Reference in New Issue