From: Al Viro > Sent: 05 December 2023 02:21 > > We need a way for csum_and_copy_{from,to}_user() to report faults. > The approach taken back in 2020 (avoid 0 as return value by starting > summing from ~0U, use 0 to report faults) had been broken; it does > yield the right value modulo 2^16-1, but the case when data is > entirely zero-filled is not handled right. It almost works, since > for most of the codepaths we have a non-zero value added in > and there 0 is not different from anything divisible by 0xffff. > However, there are cases (ICMPv4 replies, for example) where we > are not guaranteed that. > > In other words, we really need to have those primitives return 0 > on filled-with-zeroes input. Do we? I've not seen any justification for this at all. IIRC the ICMPv4 reply code needs the checksum function return 0xffff for all-zero input. So the correct and simple fix is to initialise the sum to 0xffff in the checksum function. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)