Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1453943

[PATCH v2] powerpc/32: fix csum_partial_copy_generic()

From Christophe Leroy <christophe.leroy@c-s.fr>
Newsgroups linux.kernel
Subject [PATCH v2] powerpc/32: fix csum_partial_copy_generic()
Date 2016-08-02 14:00 +0200
Message-ID <s1Gwy-3Wp-49@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


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

This patch also fixes related comments

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

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
 v2: updated comments as suggested by Segher

 arch/powerpc/lib/checksum_32.S | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/lib/checksum_32.S b/arch/powerpc/lib/checksum_32.S
index d90870a..0a57fe6 100644
--- a/arch/powerpc/lib/checksum_32.S
+++ b/arch/powerpc/lib/checksum_32.S
@@ -127,8 +127,9 @@ _GLOBAL(csum_partial_copy_generic)
 	stw	r7,12(r1)
 	stw	r8,8(r1)
 
-	andi.	r0,r4,1			/* is destination address even ? */
-	cmplwi	cr7,r0,0
+	rlwinm	r0,r4,3,0x8
+	rlwnm	r6,r6,r0,0,31	/* odd destination address: rotate one byte */
+	cmplwi	cr7,r0,0	/* is destination address even ? */
 	addic	r12,r6,0
 	addi	r6,r4,-4
 	neg	r0,r4
@@ -237,7 +238,7 @@ _GLOBAL(csum_partial_copy_generic)
 66:	addze	r3,r12
 	addi	r1,r1,16
 	beqlr+	cr7
-	rlwinm	r3,r3,8,0,31	/* swap bytes for odd destination */
+	rlwinm	r3,r3,8,0,31	/* odd destination address: rotate one byte */
 	blr
 
 /* read fault */
-- 
2.1.0

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

[PATCH v2] powerpc/32: fix csum_partial_copy_generic() Christophe Leroy <christophe.leroy@c-s.fr> - 2016-08-02 14:00 +0200
  Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Segher Boessenkool <segher@kernel.crashing.org> - 2016-08-02 15:40 +0200
  Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Segher Boessenkool <segher@kernel.crashing.org> - 2016-08-02 16:40 +0200
  Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Scott Wood <oss@buserror.net> - 2016-08-04 06:00 +0200
    Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Alessio Igor Bogani <alessio.bogani@elettra.eu> - 2016-08-04 08:40 +0200
      Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Michael Ellerman <mpe@ellerman.id.au> - 2016-08-05 09:00 +0200
        Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Christophe Leroy <christophe.leroy@c-s.fr> - 2016-08-05 09:30 +0200
          Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Michael Ellerman <mpe@ellerman.id.au> - 2016-08-05 11:40 +0200
  Re: [v2] powerpc/32: fix csum_partial_copy_generic() Michael Ellerman <patch-notifications@ellerman.id.au> - 2016-08-10 21:50 +0200

csiph-web