From: Pablo Neira Ayuso > Sent: 08 January 2016 14:02 > From: Florian Westphal <fw@xxxxxxxxx> > > Needed to convert the (64bit) conntrack counters to BE ordering. > ... > switch (priv->size) { > + case 8: { > + u64 src64; > + > + switch (priv->op) { > + case NFT_BYTEORDER_NTOH: > + for (i = 0; i < priv->len / 8; i++) { > + src64 = get_unaligned_be64(&src[i]); > + src64 = be64_to_cpu((__force __be64)src64); > + put_unaligned_be64(src64, &dst[i]); > + } > + break; > + case NFT_BYTEORDER_HTON: > + for (i = 0; i < priv->len / 8; i++) { > + src64 = get_unaligned_be64(&src[i]); > + src64 = (__force u64)cpu_to_be64(src64); > + put_unaligned_be64(src64, &dst[i]); > + } > + break; > + } > + break; That is horrid. On a little-endian system you are byteswapping the data 3 times. Image the code on a cpu that doesn't support misaligned transfers and doesn't have a byteswap instruction. David -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html