ar71xx: fix a remaining unaligned access issue
authorFelix Fietkau <nbd@nbd.name>
Thu, 19 May 2016 12:09:25 +0000 (14:09 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 19 May 2016 14:56:34 +0000 (16:56 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch

index 17e4606506ce068f6e7f3f5c32bf24e19f05f056..17a53ed6e6259554d781f2e61ecb52083e2e2c44 100644 (file)
  
  /* Values for "flag" field in struct arpt_ip (general arp structure).
   * No flags defined yet.
+--- a/net/core/utils.c
++++ b/net/core/utils.c
+@@ -321,8 +321,14 @@ void inet_proto_csum_replace16(__sum16 *
+                              bool pseudohdr)
+ {
+       __be32 diff[] = {
+-              ~from[0], ~from[1], ~from[2], ~from[3],
+-              to[0], to[1], to[2], to[3],
++              ~net_hdr_word(&from[0]),
++              ~net_hdr_word(&from[1]),
++              ~net_hdr_word(&from[2]),
++              ~net_hdr_word(&from[3]),
++              net_hdr_word(&to[0]),
++              net_hdr_word(&to[1]),
++              net_hdr_word(&to[2]),
++              net_hdr_word(&to[3]),
+       };
+       if (skb->ip_summed != CHECKSUM_PARTIAL) {
+               *sum = csum_fold(csum_partial(diff, sizeof(diff),