On Fri, Jan 23, 2009 at 04:28:49PM +1100, Herbert Xu wrote: > > > > static inline __be32 sctp_end_cksum(__be32 crc32) > > > { > > > - return ~crc32; > > > + return (__force __be32)~cpu_to_le32((__force u32)crc32); > > > } > > > > Ouch, surely there is a better way to do this? > > In fact this looks wrong. Has this code actually been tested > on big-endian? Reading this again it does seem to do the right thing as it's using the raw crc32c interface as opposed to crypto crc32c. However, I suggest that we change it as follows: 1) Make sh->csum __le32 since we're using crc32c_le. 2) Change all intermediate values in sctp/checksum.h to u32. 3) Make sctp_end_cksum return __le32 and have it do return cpu_to_le32(~crc); Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html