lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <063D6719AE5E284EB5DD2968C1650D6D1C9E258D@AcuExch.aculab.com> Date: Thu, 30 Oct 2014 17:09:31 +0000 From: David Laight <David.Laight@...LAB.COM> To: 'Or Gerlitz' <ogerlitz@...lanox.com> CC: "David S. Miller" <davem@...emloft.net>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, Matan Barak <matanb@...lanox.com>, Amir Vadai <amirv@...lanox.com>, Saeed Mahameed <saeedm@...lanox.com>, Shani Michaeli <shanim@...lanox.com> Subject: RE: [PATCH net-next 7/8] net: Add calaulation of non folded IPV6 pseudo header checksum > OK, talking to Matan, hecame up with this super-quick (compile tested > only) alternative, is > this what you were advocating for? > { > + sum = csum_partial(saddr, sizeof(saddr->in6_u.u6_addr32), sum); > + sum = csum_partial(saddr, sizeof(daddr->in6_u.u6_addr32), sum); I'm pretty sure your 'saddr' and 'daddr' are adjacent. Whether you can prove that is another matter. > + sum = csum_add(sum, (__force __wsum)htonl(len)); > + sum = csum_add(sum, (__force __wsum)htons(proto)); > + > + return sum; > +} On 64 bit systems you probably want to end up with something akin to: __u64 a, b, c, d; a = saddr[0] + saddr[1]; b = saddr[2] + saddr[3]; c = daddr[0] + daddr[1]; d = daddr[2] + daddr[3]; a += b; c += d; a += c; and then collapse down the 64bit value. However if you write the above in proper C, gcc will probably convert it to long dependence chain. An architecture specific csum_partial() probably manages to DTRT. David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists