Commit c91d4606 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

net: fix two sparse errors

First one in __skb_checksum_validate_complete() fixes the following
(and other callers)

make C=2 CF=-D__CHECK_ENDIAN__ net/ipv4/tcp_ipv4.o
  CHECK   net/ipv4/tcp_ipv4.c
include/linux/skbuff.h:3052:24: warning: incorrect type in return expression (different base types)
include/linux/skbuff.h:3052:24:    expected restricted __sum16
include/linux/skbuff.h:3052:24:    got int

Second is fixing gso_make_checksum() :

  CHECK   net/ipv4/gre_offload.c
include/linux/skbuff.h:3360:14: warning: incorrect type in assignment (different base types)
include/linux/skbuff.h:3360:14:    expected unsigned short [unsigned] [usertype] csum
include/linux/skbuff.h:3360:14:    got restricted __sum16
include/linux/skbuff.h:3365:16: warning: incorrect type in return expression (different base types)
include/linux/skbuff.h:3365:16:    expected restricted __sum16
include/linux/skbuff.h:3365:16:    got unsigned short [unsigned] [usertype] csum

Fixes: 5a212329 ("net: Support for csum_bad in skbuff")
Fixes: 7e2b10c1 ("net: Support for multiple checksums with gso")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
CC: Tom Herbert <tom@herbertland.com>
Acked-by: default avatarTom Herbert <tom@herbertland.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ba6d0564
...@@ -3051,7 +3051,7 @@ static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb, ...@@ -3051,7 +3051,7 @@ static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb,
} }
} else if (skb->csum_bad) { } else if (skb->csum_bad) {
/* ip_summed == CHECKSUM_NONE in this case */ /* ip_summed == CHECKSUM_NONE in this case */
return 1; return (__force __sum16)1;
} }
skb->csum = psum; skb->csum = psum;
...@@ -3353,15 +3353,14 @@ static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra) ...@@ -3353,15 +3353,14 @@ static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra)
static inline __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res) static inline __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res)
{ {
int plen = SKB_GSO_CB(skb)->csum_start - skb_headroom(skb) - int plen = SKB_GSO_CB(skb)->csum_start - skb_headroom(skb) -
skb_transport_offset(skb); skb_transport_offset(skb);
__u16 csum; __wsum partial;
csum = csum_fold(csum_partial(skb_transport_header(skb), partial = csum_partial(skb_transport_header(skb), plen, skb->csum);
plen, skb->csum));
skb->csum = res; skb->csum = res;
SKB_GSO_CB(skb)->csum_start -= plen; SKB_GSO_CB(skb)->csum_start -= plen;
return csum; return csum_fold(partial);
} }
static inline bool skb_is_gso(const struct sk_buff *skb) static inline bool skb_is_gso(const struct sk_buff *skb)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment