lib/checksum.c: use 32-bit arithmetic consistently
[safe/jmp/linux-2.6] / lib / checksum.c
index b2e2fd4..886b48d 100644 (file)
@@ -37,7 +37,7 @@
 
 #include <asm/byteorder.h>
 
-static inline unsigned short from32to16(unsigned long x)
+static inline unsigned short from32to16(unsigned int x)
 {
        /* add up 16-bit and 16-bit for 16+c bit */
        x = (x & 0xffff) + (x >> 16);
@@ -49,7 +49,7 @@ static inline unsigned short from32to16(unsigned long x)
 static unsigned int do_csum(const unsigned char *buff, int len)
 {
        int odd, count;
-       unsigned long result = 0;
+       unsigned int result = 0;
 
        if (len <= 0)
                goto out;
@@ -73,9 +73,9 @@ static unsigned int do_csum(const unsigned char *buff, int len)
                }
                count >>= 1;            /* nr of 32-bit words.. */
                if (count) {
-                       unsigned long carry = 0;
+                       unsigned int carry = 0;
                        do {
-                               unsigned long w = *(unsigned int *) buff;
+                               unsigned int w = *(unsigned int *) buff;
                                count--;
                                buff += 4;
                                result += carry;