lkml.org 
[lkml]   [2018]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 030/254] sctp: force the params with right types for sctp csum apis
    3.16.55-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Xin Long <lucien.xin@gmail.com>

    commit af2697a0273f7665429c47d71ab26f2412af924e upstream.

    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: e6d8b64b34aa ("net: sctp: fix and consolidate SCTP checksumming code")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    include/net/sctp/checksum.h | 13 +++++++------
    1 file changed, 7 insertions(+), 6 deletions(-)

    --- a/include/net/sctp/checksum.h
    +++ b/include/net/sctp/checksum.h
    @@ -48,31 +48,32 @@ static inline __wsum sctp_csum_update(co
    /* This uses the crypto implementation of crc32c, which is either
    * 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,
    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,
    unsigned int offset)
    {
    struct sctphdr *sh = sctp_hdr(skb);
    - __le32 ret, old = sh->checksum;
    const struct skb_checksum_ops ops = {
    .update = sctp_csum_update,
    .combine = sctp_csum_combine,
    };
    + __le32 old = sh->checksum;
    + __wsum new;

    sh->checksum = 0;
    - ret = cpu_to_le32(~__skb_checksum(skb, offset, skb->len - offset,
    - ~(__u32)0, &ops));
    + new = ~__skb_checksum(skb, offset, skb->len - offset, ~(__wsum)0, &ops);
    sh->checksum = old;

    - return ret;
    + return cpu_to_le32((__force __u32)new);
    }

    #endif /* __sctp_checksum_h__ */
    \
     
     \ /
      Last update: 2018-02-28 18:07    [W:4.072 / U:0.676 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site