lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Thu, 14 Jan 2021 12:16:24 +0800
From:   kernel test robot <lkp@...el.com>
To:     Sunil Goutham <sgoutham@...vell.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:544:31:
 sparse: sparse: incorrect type in assignment (different base types)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   65f0d2414b7079556fbbcc070b3d1c9f9587606d
commit: dc1a9bf2c8169d9f607502162af1858a73a18cb8 octeontx2-pf: Add UDP segmentation offload support
date:   4 months ago
config: alpha-randconfig-s032-20210113 (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.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.3-208-g46a52ca4-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc1a9bf2c8169d9f607502162af1858a73a18cb8
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout dc1a9bf2c8169d9f607502162af1858a73a18cb8
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=alpha 

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


"sparse warnings: (new ones prefixed by >>)"
>> drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:544:31: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] iplen @@     got restricted __be16 [usertype] @@
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:544:31: sparse:     expected unsigned short [usertype] iplen
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:544:31: sparse:     got restricted __be16 [usertype]
>> drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:546:54: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be16 [usertype] tot_len @@     got unsigned short [usertype] iplen @@
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:546:54: sparse:     expected restricted __be16 [usertype] tot_len
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:546:54: sparse:     got unsigned short [usertype] iplen
>> drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:549:60: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be16 [usertype] payload_len @@     got unsigned short [usertype] iplen @@
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:549:60: sparse:     expected restricted __be16 [usertype] payload_len
   drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c:549:60: sparse:     got unsigned short [usertype] iplen

vim +544 drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c

   503	
   504	/* Add SQE extended header subdescriptor */
   505	static void otx2_sqe_add_ext(struct otx2_nic *pfvf, struct otx2_snd_queue *sq,
   506				     struct sk_buff *skb, int *offset)
   507	{
   508		struct nix_sqe_ext_s *ext;
   509	
   510		ext = (struct nix_sqe_ext_s *)(sq->sqe_base + *offset);
   511		ext->subdc = NIX_SUBDC_EXT;
   512		if (skb_shinfo(skb)->gso_size) {
   513			ext->lso = 1;
   514			ext->lso_sb = skb_transport_offset(skb) + tcp_hdrlen(skb);
   515			ext->lso_mps = skb_shinfo(skb)->gso_size;
   516	
   517			/* Only TSOv4 and TSOv6 GSO offloads are supported */
   518			if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) {
   519				ext->lso_format = pfvf->hw.lso_tsov4_idx;
   520	
   521				/* HW adds payload size to 'ip_hdr->tot_len' while
   522				 * sending TSO segment, hence set payload length
   523				 * in IP header of the packet to just header length.
   524				 */
   525				ip_hdr(skb)->tot_len =
   526					htons(ext->lso_sb - skb_network_offset(skb));
   527			} else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) {
   528				ext->lso_format = pfvf->hw.lso_tsov6_idx;
   529	
   530				ipv6_hdr(skb)->payload_len =
   531					htons(ext->lso_sb - skb_network_offset(skb));
   532			} else if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) {
   533				__be16 l3_proto = vlan_get_protocol(skb);
   534				struct udphdr *udph = udp_hdr(skb);
   535				u16 iplen;
   536	
   537				ext->lso_sb = skb_transport_offset(skb) +
   538						sizeof(struct udphdr);
   539	
   540				/* HW adds payload size to length fields in IP and
   541				 * UDP headers while segmentation, hence adjust the
   542				 * lengths to just header sizes.
   543				 */
 > 544				iplen = htons(ext->lso_sb - skb_network_offset(skb));
   545				if (l3_proto == htons(ETH_P_IP)) {
 > 546					ip_hdr(skb)->tot_len = iplen;
   547					ext->lso_format = pfvf->hw.lso_udpv4_idx;
   548				} else {
 > 549					ipv6_hdr(skb)->payload_len = iplen;
   550					ext->lso_format = pfvf->hw.lso_udpv6_idx;
   551				}
   552	
   553				udph->len = htons(sizeof(struct udphdr));
   554			}
   555		} else if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) {
   556			ext->tstmp = 1;
   557		}
   558	
   559		*offset += sizeof(*ext);
   560	}
   561	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (38152 bytes)

Powered by blists - more mailing lists