summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2009-06-23 22:52:51 +0200
committerArnd Bergmann <arnd@arndb.de>2009-11-03 16:06:53 +0100
commit0a5549ed163520787f76b7515dfe9d9aa1c7ae37 (patch)
tree6ae1acec7b9414ee941682894f46818ede221ecb
parent20c1f641bb80fb272dec959a5caabed92e5a422e (diff)
downloadop-kernel-dev-0a5549ed163520787f76b7515dfe9d9aa1c7ae37.zip
op-kernel-dev-0a5549ed163520787f76b7515dfe9d9aa1c7ae37.tar.gz
lib/checksum: fix one more thinko
When do_csum gets unaligned data, we really need to treat the first byte as an even byte, not an odd byte, because we swap the two halves later. Found by Mike's checksum-selftest module. Reported-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--lib/checksum.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/checksum.c b/lib/checksum.c
index b08c2d0..0975087 100644
--- a/lib/checksum.c
+++ b/lib/checksum.c
@@ -57,9 +57,9 @@ static unsigned int do_csum(const unsigned char *buff, int len)
odd = 1 & (unsigned long) buff;
if (odd) {
#ifdef __LITTLE_ENDIAN
- result = *buff;
-#else
result += (*buff << 8);
+#else
+ result = *buff;
#endif
len--;
buff++;
OpenPOWER on IntegriCloud