Ralf Baechle e97288386a The type of sum in csum_tcpudp_nofold is "unsigned int", so when we assign
to it in an asm() block, and we're running on a system with 64-bit
registers, it is vitally important that we sign extend it correctly before
returning to C.  Otherwise the stray high bits will be preserved into
csum_fold, and on the SB-1 processor, 32-bit arithmetic on a non
sign-extended register will yield surprising results.
    
This caused incorrect checksums in some UDP packets for NFS root.  The
problem was mild when using a 10.0.1.x IP address, but severe when
using 192.168.1.x.
    
Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2005-10-29 19:32:25 +01:00
..
2005-09-03 00:15:11 -04:00
2005-10-28 08:16:48 -07:00
2005-10-28 12:18:07 -04:00
2005-10-28 08:16:48 -07:00
2005-09-29 08:46:27 -07:00
2005-10-28 08:16:48 -07:00
2005-10-29 19:32:20 +01:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:50 -07:00
2005-10-28 08:16:50 -07:00