Thread (4 messages) flat view 4 messages, 2 authors, 2016-08-01
STALE3658d

[PATCH] powerpc/32: fix csum_partial_copy_generic()

From: Christophe Leroy <hidden>
Date: 2016-08-01 12:57:12
Also in: lkml, stable
Subsystem: linux for powerpc (32-bit and 64-bit), the rest · Maintainers: Madhavan Srinivasan, Linus Torvalds

commit 7aef4136566b0 ("powerpc32: rewrite csum_partial_copy_generic()
based on copy_tofrom_user()") introduced a bug when destination
address is odd and initial csum is not null

In that (rare) case the initial csum value has to be rotated one byte
as well as the resulting value is

Fixes: 7aef4136566b0 ("powerpc32: rewrite csum_partial_copy_generic()
based on copy_tofrom_user()")
Cc: stable@vger.kernel.org

Signed-off-by: Christophe Leroy <redacted>
---
 arch/powerpc/lib/checksum_32.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/lib/checksum_32.S b/arch/powerpc/lib/checksum_32.S
index d90870a..ad0870a 100644
--- a/arch/powerpc/lib/checksum_32.S
+++ b/arch/powerpc/lib/checksum_32.S
@@ -127,7 +127,8 @@ _GLOBAL(csum_partial_copy_generic)
 	stw	r7,12(r1)
 	stw	r8,8(r1)
 
-	andi.	r0,r4,1			/* is destination address even ? */
+	rlwinm	r0,r4,3,0x8		/* is destination address even ? */
+	rlwnm	r6,r6,r0,0,31		/* swap bytes for odd destination */
 	cmplwi	cr7,r0,0
 	addic	r12,r6,0
 	addi	r6,r4,-4
-- 
2.1.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help