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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 12 Mar 2017 05:41:39 +0000 (06:41 +0100)
commitef674c5eb8da4ecb028a2a670b0bb1eec9eed004
tree3ee34b24f9cbe499fb45fab09e8834efc6d8e4be
parenta8af2054e98548e8515f5d7d5409bd50dcd77e82
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/mips/include/asm/checksum.h