1 Jun 2008 03:37
Re: [bug] gcc-4.3 miscompiling causing networking to bugger up
Grant Grundler <grundler <at> parisc-linux.org>
2008-06-01 01:37:12 GMT
2008-06-01 01:37:12 GMT
On Sat, May 31, 2008 at 04:58:58AM -0600, Matthew Wilcox wrote: ... > So if GCC has something in a register, it might not bother to write it > back to ram before this asm if we don't have the memory clobber. Willy, thanks for explaining...I had to reread this a few times to "get it". This would also explain why we saw it on ip_output where the ipv4 header was being written. > Fantastic work, Kyle. Thanks for spending so much time on this. Agreed. I owe you a bar of chocolate. > > diff --git a/include/asm-parisc/checksum.h b/include/asm-parisc/checksum.h > > index cc3ec1b..1916ebe 100644 > > --- a/include/asm-parisc/checksum.h > > +++ b/include/asm-parisc/checksum.h > > <at> <at> -65,7 +65,7 <at> <at> static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) > > "2:\n" > > : "=r" (sum), "=r" (iph), "=r" (ihl) > > : "1" (iph), "2" (ihl) > > - : "r19", "r20", "r21" ); > > + : "r19", "r20", "r21", "memory" ); > > > > return (__force __sum16)sum; > > } Does csum_ipv6_magic() also need the same treatment? Kyle suspects csum_ipv6_magic() might be ok because it's passing in a "struct ipv6_addr *". If that's correct, maybe we should ask davem/et al to change ip_fast_csum() to take "struct iphdr *" as well? thanks, grant -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo <at> vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RSS Feed