[ammarfaizi2-block:dhowells/linux-fs/rxrpc-ringless 35/35] net/rxrpc/recvmsg.c:311:25: sparse: sparse: cast from restricted __be16

From: kernel test robot
Date: Fri May 13 2022 - 05:00:34 EST


tree: https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/rxrpc-ringless
head: 36075641f704b02b4bcaee01d904a06676b32199
commit: 36075641f704b02b4bcaee01d904a06676b32199 [35/35] rxrpc: Don't split up received jumbo packets
config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20220513/202205131657.SjbSnATI-lkp@xxxxxxxxx/config)
compiler: sh4-linux-gcc (GCC) 11.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/ammarfaizi2/linux-block/commit/36075641f704b02b4bcaee01d904a06676b32199
git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/rxrpc-ringless
git checkout 36075641f704b02b4bcaee01d904a06676b32199
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sh SHELL=/bin/bash net/rxrpc/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)
>> net/rxrpc/recvmsg.c:311:25: sparse: sparse: cast from restricted __be16
>> net/rxrpc/recvmsg.c:311:25: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] val @@ got restricted __be16 [addressable] [usertype] cksum @@
net/rxrpc/recvmsg.c:311:25: sparse: expected unsigned short [usertype] val
net/rxrpc/recvmsg.c:311:25: sparse: got restricted __be16 [addressable] [usertype] cksum
>> net/rxrpc/recvmsg.c:311:25: sparse: sparse: cast from restricted __be16
>> net/rxrpc/recvmsg.c:311:25: sparse: sparse: cast from restricted __be16
>> net/rxrpc/recvmsg.c:311:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [usertype] cksum @@ got restricted __be16 [usertype] @@
net/rxrpc/recvmsg.c:311:23: sparse: expected unsigned short [usertype] cksum
net/rxrpc/recvmsg.c:311:23: sparse: got restricted __be16 [usertype]

vim +311 net/rxrpc/recvmsg.c

275
276 /*
277 * Set up a data location table for a jumbo DATA packet then verify
278 * and decrypt all the subpackets and locate the data for each. We
279 * also need to skip over any duplicate subpackets.
280 */
281 static int rxrpc_verify_data(struct rxrpc_call *call, struct sk_buff *skb)
282 {
283 struct rxrpc_jumbo_header jhdr;
284 struct rxrpc_skb_subpacket *subs;
285 struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
286 unsigned int offset = sizeof(struct rxrpc_wire_header);
287 unsigned int len = skb->len - sizeof(struct rxrpc_wire_header);
288 rxrpc_seq_t seq = sp->hdr.seq;
289 int nr_subs = sp->nr_subpackets - 1, i = 0, j;
290 u16 cksum = sp->hdr.cksum;
291
292 subs = kcalloc(sp->nr_subpackets, sizeof(*sp->subs), GFP_KERNEL);
293 if (!subs)
294 return -ENOMEM;
295 sp->subs = subs;
296
297 for (; j < nr_subs; j++, seq++) {
298 if (after(seq, call->rx_consumed)) {
299 subs[i].offset = offset;
300 subs[i].len = RXRPC_JUMBO_DATALEN;
301 subs[i].cksum = cksum;
302 i++;
303 } else {
304 sp->hdr.seq++;
305 sp->nr_subpackets--;
306 }
307 offset += RXRPC_JUMBO_DATALEN;
308 if (skb_copy_bits(skb, offset, &jhdr.cksum, 2) < 0)
309 return -EPROTO;
310 offset += sizeof(jhdr);
> 311 cksum = htons(jhdr.cksum);
312 len -= RXRPC_JUMBO_SUBPKTLEN;
313 }
314
315 subs[i].offset = offset;
316 subs[i].len = len;
317 subs[i].cksum = cksum;
318 return call->security->verify_packet(call, skb);
319 }
320

--
0-DAY CI Kernel Test Service
https://01.org/lkp