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  linux-cve-announce  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:   Fri, 26 Jun 2020 05:38:17 +0800
From:   kernel test robot <lkp@...el.com>
To:     Luc Van Oostenryck <luc.vanoostenryck@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: drivers/infiniband/hw/hfi1/pio_copy.c:421:24: sparse: sparse: cast
 removes address space '__iomem' of expression

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   908f7d12d3ba51dfe0449b9723199b423f97ca9a
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date:   7 days ago
config: x86_64-randconfig-s022-20200625 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-dirty
        git checkout 670d0a4b10704667765f7d18f7592993d02783aa
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

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/infiniband/hw/hfi1/pio_copy.c:421:24: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/infiniband/hw/hfi1/pio_copy.c:421:24: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/infiniband/hw/hfi1/pio_copy.c:547:24: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/infiniband/hw/hfi1/pio_copy.c:547:24: sparse: sparse: cast removes address space '__iomem' of expression
--
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:330:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:484:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:3002:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected unsigned char const [usertype] *ies @@     got unsigned char const [noderef] __rcu * @@
   drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:3002:63: sparse:     expected unsigned char const [usertype] *ies
>> drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:3002:63: sparse:     got unsigned char const [noderef] __rcu *
   drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:3003:38: sparse: sparse: dereference of noderef expression
   drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:3003:38: sparse: sparse: dereference of noderef expression

vim +/__iomem +421 drivers/infiniband/hw/hfi1/pio_copy.c

7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  384  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  385  /*
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  386   * Mid copy helper, "mixed case" - source is 64-bit aligned but carry
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  387   * bytes are non-zero.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  388   *
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  389   * Whole u64s must be written to the chip, so bytes must be manually merged.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  390   *
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  391   * @pbuf: destination buffer
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  392   * @from: data source, is QWORD aligned.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  393   * @nbytes: bytes to copy
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  394   *
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  395   * Must handle nbytes < 8.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  396   */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  397  static void mid_copy_mix(struct pio_buf *pbuf, const void *from, size_t nbytes)
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  398  {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  399  	void __iomem *dest = pbuf->start + (pbuf->qw_written * sizeof(u64));
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  400  	void __iomem *dend;			/* 8-byte data end */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  401  	unsigned long qw_to_write = nbytes >> 3;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  402  	unsigned long bytes_left = nbytes & 0x7;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  403  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  404  	/* calculate 8-byte data end */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  405  	dend = dest + (qw_to_write * sizeof(u64));
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  406  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  407  	if (pbuf->qw_written < PIO_BLOCK_QWS) {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  408  		/*
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  409  		 * Still within SOP block.  We don't need to check for
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  410  		 * wrap because we are still in the first block and
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  411  		 * can only wrap on block boundaries.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  412  		 */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  413  		void __iomem *send;		/* SOP end */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  414  		void __iomem *xend;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  415  
4d114fdd90ab41 drivers/staging/rdma/hfi1/pio_copy.c  Jubin John        2016-02-14  416  		/*
4d114fdd90ab41 drivers/staging/rdma/hfi1/pio_copy.c  Jubin John        2016-02-14  417  		 * calculate the end of data or end of block, whichever
4d114fdd90ab41 drivers/staging/rdma/hfi1/pio_copy.c  Jubin John        2016-02-14  418  		 * comes first
4d114fdd90ab41 drivers/staging/rdma/hfi1/pio_copy.c  Jubin John        2016-02-14  419  		 */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  420  		send = pbuf->start + PIO_BLOCK_SIZE;
c754db403d7408 drivers/staging/rdma/hfi1/pio_copy.c  Bhumika Goyal     2016-02-26 @421  		xend = min(send, dend);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  422  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  423  		/* shift up to SOP=1 space */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  424  		dest += SOP_DISTANCE;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  425  		xend += SOP_DISTANCE;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  426  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  427  		/* write 8-byte chunk data */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  428  		while (dest < xend) {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  429  			merge_write8(pbuf, dest, from);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  430  			from += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  431  			dest += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  432  		}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  433  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  434  		/* shift down to SOP=0 space */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  435  		dest -= SOP_DISTANCE;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  436  	}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  437  	/*
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  438  	 * At this point dest could be (either, both, or neither):
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  439  	 * - at dend
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  440  	 * - at the wrap
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  441  	 */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  442  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  443  	/*
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  444  	 * If the wrap comes before or matches the data end,
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  445  	 * copy until until the wrap, then wrap.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  446  	 *
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  447  	 * If dest is at the wrap, we will fall into the if,
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  448  	 * not do the loop, when wrap.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  449  	 *
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  450  	 * If the data ends at the end of the SOP above and
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  451  	 * the buffer wraps, then pbuf->end == dend == dest
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  452  	 * and nothing will get written.
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  453  	 */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  454  	if (pbuf->end <= dend) {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  455  		while (dest < pbuf->end) {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  456  			merge_write8(pbuf, dest, from);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  457  			from += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  458  			dest += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  459  		}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  460  
8af8d2970ed984 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-10-25  461  		dest -= pbuf->sc->size;
8af8d2970ed984 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-10-25  462  		dend -= pbuf->sc->size;
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  463  	}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  464  
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  465  	/* write 8-byte non-SOP, non-wrap chunk data */
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  466  	while (dest < dend) {
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  467  		merge_write8(pbuf, dest, from);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  468  		from += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  469  		dest += sizeof(u64);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  470  	}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  471  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  472  	pbuf->qw_written += qw_to_write;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  473  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  474  	/* handle carry and left-over bytes */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  475  	if (pbuf->carry_bytes + bytes_left >= 8) {
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  476  		unsigned long nread;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  477  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  478  		/* there is enough to fill another qw - fill carry */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  479  		nread = 8 - pbuf->carry_bytes;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  480  		read_extra_bytes(pbuf, from, nread);
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  481  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  482  		/*
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  483  		 * One more write - but need to make sure dest is correct.
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  484  		 * Check for wrap and the possibility the write
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  485  		 * should be in SOP space.
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  486  		 *
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  487  		 * The two checks immediately below cannot both be true, hence
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  488  		 * the else. If we have wrapped, we cannot still be within the
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  489  		 * first block. Conversely, if we are still in the first block,
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  490  		 * we cannot have wrapped. We do the wrap check first as that
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  491  		 * is more likely.
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  492  		 */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  493  		/* adjust if we have wrapped */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  494  		if (dest >= pbuf->end)
8af8d2970ed984 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-10-25  495  			dest -= pbuf->sc->size;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  496  		/* jump to the SOP range if within the first block */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  497  		else if (pbuf->qw_written < PIO_BLOCK_QWS)
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  498  			dest += SOP_DISTANCE;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  499  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  500  		/* flush out full carry */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  501  		carry8_write8(pbuf->carry, dest);
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  502  		pbuf->qw_written++;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  503  
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  504  		/* now adjust and read the rest of the bytes into carry */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  505  		bytes_left -= nread;
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  506  		from += nread; /* from is now not aligned */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  507  		read_low_bytes(pbuf, from, bytes_left);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  508  	} else {
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  509  		/* not enough to fill another qw, append the rest to carry */
a4309d94f71067 drivers/infiniband/hw/hfi1/pio_copy.c Sebastian Sanchez 2016-09-25  510  		read_extra_bytes(pbuf, from, bytes_left);
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  511  	}
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  512  }
7724105686e718 drivers/staging/rdma/hfi1/pio_copy.c  Mike Marciniszyn  2015-07-30  513  

:::::: The code at line 421 was first introduced by commit
:::::: c754db403d740827e49f5f9dedd9594ff55ccbe7 Staging: rdma: Use min macro instead of ternary operator

:::::: TO: Bhumika Goyal <bhumirks@...il.com>
:::::: CC: Greg Kroah-Hartman <gregkh@...uxfoundation.org>

---
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" (40824 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ