Commit af2697a0 authored by Xin Long's avatar Xin Long Committed by David S. Miller

sctp: force the params with right types for sctp csum apis

Now sctp_csum_xxx doesn't really match the param types of these common
csum apis. As sctp_csum_xxx is defined in sctp/checksum.h, many sparse
errors occur when make C=2 not only with M=net/sctp but also with other
modules that include this header file.

This patch is to force them fit in csum apis with the right types.

Fixes: e6d8b64b ("net: sctp: fix and consolidate SCTP checksumming code")
Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 08f46070
...@@ -48,31 +48,32 @@ static inline __wsum sctp_csum_update(const void *buff, int len, __wsum sum) ...@@ -48,31 +48,32 @@ static inline __wsum sctp_csum_update(const void *buff, int len, __wsum sum)
/* This uses the crypto implementation of crc32c, which is either /* This uses the crypto implementation of crc32c, which is either
* implemented w/ hardware support or resolves to __crc32c_le(). * implemented w/ hardware support or resolves to __crc32c_le().
*/ */
return crc32c(sum, buff, len); return (__force __wsum)crc32c((__force __u32)sum, buff, len);
} }
static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2, static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2,
int offset, int len) int offset, int len)
{ {
return __crc32c_le_combine(csum, csum2, len); return (__force __wsum)__crc32c_le_combine((__force __u32)csum,
(__force __u32)csum2, len);
} }
static inline __le32 sctp_compute_cksum(const struct sk_buff *skb, static inline __le32 sctp_compute_cksum(const struct sk_buff *skb,
unsigned int offset) unsigned int offset)
{ {
struct sctphdr *sh = sctp_hdr(skb); struct sctphdr *sh = sctp_hdr(skb);
__le32 ret, old = sh->checksum;
const struct skb_checksum_ops ops = { const struct skb_checksum_ops ops = {
.update = sctp_csum_update, .update = sctp_csum_update,
.combine = sctp_csum_combine, .combine = sctp_csum_combine,
}; };
__le32 old = sh->checksum;
__wsum new;
sh->checksum = 0; sh->checksum = 0;
ret = cpu_to_le32(~__skb_checksum(skb, offset, skb->len - offset, new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, &ops);
~(__u32)0, &ops));
sh->checksum = old; sh->checksum = old;
return ret; return cpu_to_le32((__force __u32)new);
} }
#endif /* __sctp_checksum_h__ */ #endif /* __sctp_checksum_h__ */
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