parisc: fix ipv6 checksum
Kyle McMartin [Mon, 8 Dec 2008 05:15:51 +0000 (05:15 +0000)]
ipv6 recently started exhibiting the same symptoms as ipv4 was, add
a memory clobber around inline checksum assembly that fribbles memory
to ensure gcc doesn't erroneously cache across it.

Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>

arch/parisc/include/asm/checksum.h

index e9639cc..c84b2fc 100644 (file)
@@ -182,7 +182,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
 #endif
        : "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len)
        : "0" (sum), "1" (saddr), "2" (daddr), "3" (len), "r" (proto)
-       : "r19", "r20", "r21", "r22");
+       : "r19", "r20", "r21", "r22", "memory");
        return csum_fold(sum);
 }