From: Johannes Berg <johannes.b...@intel.com>

Use the correct type for these manipulations, which is __wsum,
instead of using __be32. This doesn't really change anything
since __wsum really *is* __be32, but removes the address space
warnings from sparse.

Cc: Eric Dumazet <eduma...@google.com>
Fixes: 34ae6a1aa054 ("ipv6: update skb->csum when CE mark is propagated")
Signed-off-by: Johannes Berg <johannes.b...@intel.com>
---
 include/net/inet_ecn.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h
index 0dc0a51da38f..89aa4e73fc37 100644
--- a/include/net/inet_ecn.h
+++ b/include/net/inet_ecn.h
@@ -119,14 +119,14 @@ struct ipv6hdr;
  */
 static inline int IP6_ECN_set_ce(struct sk_buff *skb, struct ipv6hdr *iph)
 {
-       __be32 from, to;
+       __wsum from, to;
 
        if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
                return 0;
 
-       from = *(__be32 *)iph;
-       to = from | htonl(INET_ECN_CE << 20);
-       *(__be32 *)iph = to;
+       from = *(__wsum *)iph;
+       to = from | (__force __wsum)htonl(INET_ECN_CE << 20);
+       *(__wsum *)iph = to;
        if (skb->ip_summed == CHECKSUM_COMPLETE)
                skb->csum = csum_add(csum_sub(skb->csum, from), to);
        return 1;
-- 
2.8.1

Reply via email to