drivers/ata/pata_ep93xx.c:494:33: sparse: sparse: incorrect type in assignment (different base types)

kernel test robot <[email protected]> Thu, 23 Jul 2026 15:15:40 +0800
Newsgroups dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi Rosen,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   4539944e515183668109bdf4d0c3d7d228383d88
commit: 590da526959499e58671f65655825d8a1973ff27 ata: pata_ep93xx: add COMPILE_TEST support
date:   7 weeks ago
config: microblaze-randconfig-r121-20260723 (https://download.01.org/0day-ci/archive/20260723/[email protected]/config)
compiler: microblaze-linux-gcc (GCC) 16.1.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260723/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 590da5269594 ("ata: pata_ep93xx: add COMPILE_TEST support")
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
>> drivers/ata/pata_ep93xx.c:494:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] @@     got restricted __le16 [usertype] @@
   drivers/ata/pata_ep93xx.c:494:33: sparse:     expected unsigned short [usertype]
   drivers/ata/pata_ep93xx.c:494:33: sparse:     got restricted __le16 [usertype]
>> drivers/ata/pata_ep93xx.c:498:58: sparse: sparse: cast to restricted __le16
>> drivers/ata/pata_ep93xx.c:508:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned char @@     got restricted __le16 [usertype] @@
   drivers/ata/pata_ep93xx.c:508:30: sparse:     expected unsigned char
   drivers/ata/pata_ep93xx.c:508:30: sparse:     got restricted __le16 [usertype]
   drivers/ata/pata_ep93xx.c:514:58: sparse: sparse: cast to restricted __le16

vim +494 drivers/ata/pata_ep93xx.c

2fff27512600f9 Rafal Prylowski           2012-04-12  480  
2fff27512600f9 Rafal Prylowski           2012-04-12  481  /* Note: original code is ata_sff_data_xfer */
989e0aac1a801e Bartlomiej Zolnierkiewicz 2016-12-30  482  static unsigned int ep93xx_pata_data_xfer(struct ata_queued_cmd *qc,
2fff27512600f9 Rafal Prylowski           2012-04-12  483  					  unsigned char *buf,
2fff27512600f9 Rafal Prylowski           2012-04-12  484  					  unsigned int buflen, int rw)
2fff27512600f9 Rafal Prylowski           2012-04-12  485  {
989e0aac1a801e Bartlomiej Zolnierkiewicz 2016-12-30  486  	struct ata_port *ap = qc->dev->link->ap;
2fff27512600f9 Rafal Prylowski           2012-04-12  487  	struct ep93xx_pata_data *drv_data = ap->host->private_data;
2fff27512600f9 Rafal Prylowski           2012-04-12  488  	u16 *data = (u16 *)buf;
2fff27512600f9 Rafal Prylowski           2012-04-12  489  	unsigned int words = buflen >> 1;
2fff27512600f9 Rafal Prylowski           2012-04-12  490  
2fff27512600f9 Rafal Prylowski           2012-04-12  491  	/* Transfer multiple of 2 bytes */
2fff27512600f9 Rafal Prylowski           2012-04-12  492  	while (words--)
2fff27512600f9 Rafal Prylowski           2012-04-12  493  		if (rw == READ)
2fff27512600f9 Rafal Prylowski           2012-04-12 @494  			*data++ = cpu_to_le16(
2fff27512600f9 Rafal Prylowski           2012-04-12  495  				ep93xx_pata_read_data(
2fff27512600f9 Rafal Prylowski           2012-04-12  496  					drv_data, IDECTRL_ADDR_DATA));
2fff27512600f9 Rafal Prylowski           2012-04-12  497  		else
2fff27512600f9 Rafal Prylowski           2012-04-12 @498  			ep93xx_pata_write_data(drv_data, le16_to_cpu(*data++),
2fff27512600f9 Rafal Prylowski           2012-04-12  499  				IDECTRL_ADDR_DATA);
2fff27512600f9 Rafal Prylowski           2012-04-12  500  
2fff27512600f9 Rafal Prylowski           2012-04-12  501  	/* Transfer trailing 1 byte, if any. */
2fff27512600f9 Rafal Prylowski           2012-04-12  502  	if (unlikely(buflen & 0x01)) {
2fff27512600f9 Rafal Prylowski           2012-04-12  503  		unsigned char pad[2] = { };
2fff27512600f9 Rafal Prylowski           2012-04-12  504  
2fff27512600f9 Rafal Prylowski           2012-04-12  505  		buf += buflen - 1;
2fff27512600f9 Rafal Prylowski           2012-04-12  506  
2fff27512600f9 Rafal Prylowski           2012-04-12  507  		if (rw == READ) {
2fff27512600f9 Rafal Prylowski           2012-04-12 @508  			*pad = cpu_to_le16(
2fff27512600f9 Rafal Prylowski           2012-04-12  509  				ep93xx_pata_read_data(
2fff27512600f9 Rafal Prylowski           2012-04-12  510  					drv_data, IDECTRL_ADDR_DATA));
2fff27512600f9 Rafal Prylowski           2012-04-12  511  			*buf = pad[0];
2fff27512600f9 Rafal Prylowski           2012-04-12  512  		} else {
2fff27512600f9 Rafal Prylowski           2012-04-12  513  			pad[0] = *buf;
2fff27512600f9 Rafal Prylowski           2012-04-12  514  			ep93xx_pata_write_data(drv_data, le16_to_cpu(*pad),
2fff27512600f9 Rafal Prylowski           2012-04-12  515  					  IDECTRL_ADDR_DATA);
2fff27512600f9 Rafal Prylowski           2012-04-12  516  		}
2fff27512600f9 Rafal Prylowski           2012-04-12  517  		words++;
2fff27512600f9 Rafal Prylowski           2012-04-12  518  	}
2fff27512600f9 Rafal Prylowski           2012-04-12  519  
2fff27512600f9 Rafal Prylowski           2012-04-12  520  	return words << 1;
2fff27512600f9 Rafal Prylowski           2012-04-12  521  }
2fff27512600f9 Rafal Prylowski           2012-04-12  522  

:::::: The code at line 494 was first introduced by commit
:::::: 2fff27512600f9ad91335577e485a8552edb0abf PATA host controller driver for ep93xx

:::::: TO: Rafal Prylowski <[email protected]>
:::::: CC: Jeff Garzik <[email protected]>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki