RE: [PATCH v4 3/5] staging: r8188eu: incorrect type in csum_ipv6_magic

From: David Laight
Date: Wed Aug 25 2021 - 05:23:40 EST


From: Aakash Hemadri
> Sent: 23 August 2021 18:00
>
> Fix sparse warning:
> > rtw_br_ext.c:771:84: got restricted __be16 [usertype] payload_len
> > rtw_br_ext.c:773:110: warning: incorrect type in argument 2
> (different base types)
> > rtw_br_ext.c:773:110: expected int len
> > rtw_br_ext.c:773:110: got restricted __be16 [usertype] payload_len
>
> csum_ipv6_magic and csum_partial expect int len not __be16, use
> be16_to_cpu()

This is a behaviour change on LE systems.
Even if you are testing on BE the commit message should say
that it fixes the length passed to the checksum code and
was detected by sparse.

...
> hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr,
> - iph->payload_len,
> + be16_to_cpu(iph->payload_len),
> IPPROTO_ICMPV6,
> - csum_partial((__u8 *)hdr, iph->payload_len, 0));
> + csum_partial((__u8 *)hdr, be16_to_cpu(iph->payload_len), 0));

Oh - that code is indented far too many times.
I had to delete a load of tabs to stop my mail crapping it.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)