]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
[PATCH] s390: Fix TCP/UDP pseudo header checksum computation.
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 4 May 2007 19:22:11 +0000 (21:22 +0200)
committerChris Wright <chrisw@sous-sol.org>
Mon, 11 Jun 2007 18:37:10 +0000 (11:37 -0700)
commit915db94028ed4c8e3b11c79991a07cacd8437850
tree471822157d90a8e14d526d4b5c9a6a6404316765
parent4c44ac59ef02a48493c8a23217a4c93743e4a09d
[PATCH] s390: Fix TCP/UDP pseudo header checksum computation.

git commit f994aae1bd8e4813d59a2ed64d17585fe42d03fc changed the
function declaration of csum_tcpudp_nofold. Argument types were
changed from unsigned long to __be32 (unsigned int). Therefore we
lost the implicit type conversion that zeroed the upper half of the
registers that are used to pass parameters. Since the inline assembly
relied on this we ended up adding random values and wrong checksums
were created.
Showed only up on machines with more than 4GB since gcc produced code
where the registers that are used to pass 'saddr' and 'daddr' previously
contained addresses before calling this function.
Fix this by using 32 bit arithmetics and convert code to C, since gcc
produces better code than these hand-optimized versions.

Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
include/asm-s390/checksum.h