From: Scott Wood <oss@buserror.net>
To: Christophe Leroy <christophe.leroy@c-s.fr>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
stable@vger.kernel.org, antoine.blangy@c-s.fr,
segher@kernel.crashing.org,
Alessio Igor Bogani <alessio.bogani@elettra.eu>
Subject: Re: [PATCH v2] powerpc/32: fix csum_partial_copy_generic()
Date: Wed, 03 Aug 2016 22:53:33 -0500 [thread overview]
Message-ID: <1470282813.25630.242.camel@buserror.net> (raw)
In-Reply-To: <20160802080705.69A9F1A2394@localhost.localdomain>
On Tue, 2016-08-02 at 10:07 +0200, Christophe Leroy wrote:
> 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(-)
Alessio, can you confirm whether this fixes the problem you reported?
-Scott
>
> 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 */
next prev parent reply other threads:[~2016-08-04 3:53 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-02 8:07 [PATCH v2] powerpc/32: fix csum_partial_copy_generic() Christophe Leroy
2016-08-02 12:41 ` Segher Boessenkool
2016-08-02 12:51 ` Segher Boessenkool
2016-08-04 3:53 ` Scott Wood [this message]
2016-08-04 6:15 ` Alessio Igor Bogani
2016-08-05 6:57 ` Michael Ellerman
2016-08-05 7:26 ` Christophe Leroy
2016-08-05 7:26 ` Christophe Leroy
2016-08-05 9:38 ` Michael Ellerman
2016-08-05 9:38 ` Michael Ellerman
2016-08-10 12:46 ` [v2] " Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470282813.25630.242.camel@buserror.net \
--to=oss@buserror.net \
--cc=alessio.bogani@elettra.eu \
--cc=antoine.blangy@c-s.fr \
--cc=benh@kernel.crashing.org \
--cc=christophe.leroy@c-s.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=segher@kernel.crashing.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.