CRC32C big endian bugs...
authorDavid Miller <davem@davemloft.net>
Fri, 15 Feb 2008 16:20:02 +0000 (11:20 -0500)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Fri, 15 Feb 2008 16:20:02 +0000 (11:20 -0500)
The CRC32C implementation in the btrfs progs is different from the one
in the kernel, so obviously nothing can possibly work on big-endian.

crc32c.c

index f07ba13..4dc5f9c 100644 (file)
--- a/crc32c.c
+++ b/crc32c.c
@@ -91,13 +91,11 @@ static const u32 crc32c_table[256] = {
  * crc using table.
  */
 
-u32 crc32c_le(u32 seed, unsigned char const *data, size_t length)
+u32 crc32c_le(u32 crc, unsigned char const *data, size_t length)
 {
-       u32 crc = (__force __u32)(cpu_to_le32(seed));
-       
        while (length--)
                crc =
                    crc32c_table[(crc ^ *data++) & 0xFFL] ^ (crc >> 8);
 
-       return le32_to_cpu((__force __le32)crc);
+       return crc;
 }