Ver código fonte

[ARM SMP] Fix data corruption in test_* bitops

If we found that the bit was already in the desired state, we
would skip performing the operation, and write random data back.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 20 anos atrás
pai
commit
614d73edae
1 arquivos alterados com 3 adições e 3 exclusões
  1. 3 3
      arch/arm/lib/bitops.h

+ 3 - 3
arch/arm/lib/bitops.h

@@ -19,9 +19,9 @@
 	mov	r3, r2, lsl r3		@ create mask
 1:	ldrexb	r2, [r1]
 	ands	r0, r2, r3		@ save old value of bit
-	\instr	ip, r2, r3			@ toggle bit
-	strexb	r2, ip, [r1]
-	cmp	r2, #0
+	\instr	r2, r2, r3			@ toggle bit
+	strexb	ip, r2, [r1]
+	cmp	ip, #0
 	bne	1b
 	cmp	r0, #0
 	movne	r0, #1