MIPS: Fix special case in 64 bit IP checksumming.
authorRalf Baechle <ralf@linux-mips.org>
Thu, 26 Jan 2017 01:16:47 +0000 (02:16 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 5 Jun 2017 20:13:49 +0000 (21:13 +0100)
commit08b2e7644094195c098ffd2cae7ac5f3281445f0
tree0278681f97647f188ab9520899f039bf32800506
parentc0d3aa116fac34a3b39c2f57908aa4788354bf46
MIPS: Fix special case in 64 bit IP checksumming.

commit 66fd848cadaa6be974a8c780fbeb328f0af4d3bd upstream.

For certain arguments such as saddr = 0xc0a8fd60, daddr = 0xc0a8fda1,
len = 80, proto = 17, sum = 0x7eae049d there will be a carry when
folding the intermediate 64 bit checksum to 32 bit but the code doesn't
add the carry back to the one's complement sum, thus an incorrect result
will be generated.

Reported-by: Mark Zhang <bomb.zhang@gmail.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/mips/include/asm/checksum.h