Messages in this thread | | | Subject | Re: [PATCH] powerpc: fix csum_ipv6_magic() on little endian platforms | From | Christophe LEROY <> | Date | Mon, 17 Sep 2018 14:27:11 +0200 |
| |
Hi Michael,
Le 10/09/2018 à 16:28, Xin Long a écrit : > On Mon, Sep 10, 2018 at 2:09 PM Christophe Leroy > <christophe.leroy@c-s.fr> wrote: >> >> On little endian platforms, csum_ipv6_magic() keeps len and proto in >> CPU byte order. This generates a bad results leading to ICMPv6 packets >> from other hosts being dropped by powerpc64le platforms. >> >> In order to fix this, len and proto should be converted to network >> byte order ie bigendian byte order. However checksumming 0x12345678 >> and 0x56341278 provide the exact same result so it is enough to >> rotate the sum of len and proto by 1 byte. >> >> PPC32 only support bigendian so the fix is needed for PPC64 only >> >> Fixes: e9c4943a107b ("powerpc: Implement csum_ipv6_magic in assembly") >> Reported-by: Jianlin Shi <jishi@redhat.com> >> Reported-by: Xin Long <lucien.xin@gmail.com> >> Cc: <stable@vger.kernel.org> # 4.18+ >> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> >> --- >> arch/powerpc/lib/checksum_64.S | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/arch/powerpc/lib/checksum_64.S b/arch/powerpc/lib/checksum_64.S >> index 886ed94b9c13..2a68c43e13f5 100644 >> --- a/arch/powerpc/lib/checksum_64.S >> +++ b/arch/powerpc/lib/checksum_64.S >> @@ -443,6 +443,9 @@ _GLOBAL(csum_ipv6_magic) >> addc r0, r8, r9 >> ld r10, 0(r4) >> ld r11, 8(r4) >> +#ifndef CONFIG_CPU_BIG_ENDIAN >> + rotldi r5, r5, 8 >> +#endif >> adde r0, r0, r10 >> add r5, r5, r7 >> adde r0, r0, r11 >> -- >> 2.13.3 >> > Tested-by: Xin Long <lucien.xin@gmail.com> >
Could you take this fix for 4.19 ?
Unless someone takes it through the netdev tree ?
Thanks Christophe
| |