On Mon, Sep 19, 2005 at 11:28:18PM -0400, Daniel Jacobowitz wrote: > 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. Good catch. And just to increase the func factor this bug did also apply to 2.4. Applied, Ralf