diff options
author | Kyle McMartin <kyle@mcmartin.ca> | 2008-12-08 00:15:51 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@mcmartin.ca> | 2009-01-05 14:11:05 -0500 |
commit | 5fbf6635a951a75870be9874580c55da538fb025 (patch) | |
tree | 6332d1058f2cdeabce2764947eb61a7d06ff0531 | |
parent | 6525ee55bbfd35bf3aff8c59562d6a3d8559a4f0 (diff) |
parisc: fix ipv6 checksum
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>
-rw-r--r-- | arch/parisc/include/asm/checksum.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/parisc/include/asm/checksum.h b/arch/parisc/include/asm/checksum.h index e9639ccc3fce..c84b2fcb18a9 100644 --- a/arch/parisc/include/asm/checksum.h +++ b/arch/parisc/include/asm/checksum.h | |||
@@ -182,7 +182,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, | |||
182 | #endif | 182 | #endif |
183 | : "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len) | 183 | : "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len) |
184 | : "0" (sum), "1" (saddr), "2" (daddr), "3" (len), "r" (proto) | 184 | : "0" (sum), "1" (saddr), "2" (daddr), "3" (len), "r" (proto) |
185 | : "r19", "r20", "r21", "r22"); | 185 | : "r19", "r20", "r21", "r22", "memory"); |
186 | return csum_fold(sum); | 186 | return csum_fold(sum); |
187 | } | 187 | } |
188 | 188 | ||