lib/checksum.c: fix endianess bug
authorArnd Bergmann <arnd@arndb.de>
Fri, 19 Jun 2009 08:41:19 +0000 (10:41 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 19 Jun 2009 12:58:13 +0000 (14:58 +0200)
commit32a9ff9cc55b42543a84bca90b070df92af72671
treece4d38741f8b78f5e4f193f5032846743e76b183
parentfcec9bf12442d0cd50d6cee125d168cfc3f37c5e
lib/checksum.c: fix endianess bug

The new generic checksum code has a small dependency on endianess and
worked only on big-endian systems. I could not find a nice efficient
way to express this, so I added an #ifdef. Using
'result += le16_to_cpu(*buff);' would have worked as well, but
would be slightly less efficient on big-endian systems and IMHO
would not be clearer.

Also fix a bug that prevents this from working on 64-bit machines.
If you have a 64-bit CPU and want to use the generic checksum
code, you should probably do some more optimizations anyway, but
at least the code should not break.

Reported-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
lib/checksum.c