summaryrefslogtreecommitdiff
path: root/COPYING
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2007-03-26 20:42:39 +0200
committerHeiko Carstens <heiko.carstens@de.ibm.com>2007-03-26 20:43:46 +0200
commitafbc1e994ddcf3b6fe2dc928ee8dc31a5d0c3118 (patch)
tree95ccefc1b49aa275d06c39f9bd386a7d2ceb7d6a /COPYING
parent04439694ea82fed62a97fd474147966381201954 (diff)
downloadlinux-3.10-afbc1e994ddcf3b6fe2dc928ee8dc31a5d0c3118.tar.gz
linux-3.10-afbc1e994ddcf3b6fe2dc928ee8dc31a5d0c3118.tar.bz2
linux-3.10-afbc1e994ddcf3b6fe2dc928ee8dc31a5d0c3118.zip
[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>
Diffstat (limited to 'COPYING')
0 files changed, 0 insertions, 0 deletions