drivers/gpib/cb7210/cb7210.c:120:32: sparse: sparse: cast to restricted __le16

From: kernel test robot

Date: Tue May 26 2026 - 14:54:30 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d60ec36cab338dfe2ae40d73e9c8d6c4af70d2b8
commit: e6ab504633e4c06e35377ecf3c8cbc304de79858 staging: gpib: Destage gpib
date: 6 months ago
config: m68k-randconfig-r133-20260526 (https://download.01.org/0day-ci/archive/20260527/202605270241.UqLZ5hGH-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 11.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260527/202605270241.UqLZ5hGH-lkp@xxxxxxxxx/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: e6ab504633e4 ("staging: gpib: Destage gpib")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605270241.UqLZ5hGH-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpib/cb7210/cb7210.c:120:32: sparse: sparse: cast to restricted __le16
>> drivers/gpib/cb7210/cb7210.c:120:32: sparse: sparse: cast to restricted __le16
>> drivers/gpib/cb7210/cb7210.c:120:32: sparse: sparse: cast to restricted __le16
>> drivers/gpib/cb7210/cb7210.c:120:32: sparse: sparse: cast to restricted __le16
drivers/gpib/cb7210/cb7210.c:148:24: sparse: sparse: cast to restricted __le16
drivers/gpib/cb7210/cb7210.c:148:24: sparse: sparse: cast to restricted __le16
drivers/gpib/cb7210/cb7210.c:148:24: sparse: sparse: cast to restricted __le16
drivers/gpib/cb7210/cb7210.c:148:24: sparse: sparse: cast to restricted __le16
drivers/gpib/cb7210/cb7210.c: note: in included file (through arch/m68k/include/asm/io.h, include/linux/io.h, include/linux/irq.h, include/asm-generic/hardirq.h, ...):
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer
arch/m68k/include/asm/io_mm.h:164:21: sparse: sparse: Using plain integer as NULL pointer

vim +120 drivers/gpib/cb7210/cb7210.c

e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 78
e8d9c91abf5ad9 drivers/staging/gpib/cb7210/cb7210.c Michael Rubin 2025-04-09 79 static int fifo_read(struct gpib_board *board, struct cb7210_priv *cb_priv, u8 *buffer,
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 80 size_t length, int *end, size_t *bytes_read)
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 81 {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 82 ssize_t retval = 0;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 83 struct nec7210_priv *nec_priv = &cb_priv->nec7210_priv;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 84 int hs_status;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 85 u16 word;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 86 unsigned long flags;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 87
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 88 *bytes_read = 0;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 89 if (cb_priv->fifo_iobase == 0) {
82e3508046f9bc drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2025-02-20 90 dev_err(board->gpib_dev, "fifo iobase is zero!\n");
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 91 return -EIO;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 92 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 93 *end = 0;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 94 if (length <= cb7210_fifo_size) {
82e3508046f9bc drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2025-02-20 95 dev_err(board->gpib_dev, " bug! fifo read length < fifo size\n");
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 96 return -EINVAL;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 97 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 98
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 99 input_fifo_enable(board, 1);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 100
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 101 while (*bytes_read + cb7210_fifo_size < length) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 102 nec7210_set_reg_bits(nec_priv, IMR2, HR_DMAI, HR_DMAI);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 103
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 104 if (wait_event_interruptible(board->wait,
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 105 (cb_priv->in_fifo_half_full &&
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 106 have_fifo_word(cb_priv)) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 107 test_bit(RECEIVED_END_BN, &nec_priv->state) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 108 test_bit(DEV_CLEAR_BN, &nec_priv->state) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 109 test_bit(TIMO_NUM, &board->status))) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 110 retval = -ERESTARTSYS;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 111 nec7210_set_reg_bits(nec_priv, IMR2, HR_DMAI, 0);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 112 break;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 113 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 114
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 115 spin_lock_irqsave(&board->spinlock, flags);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 116
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 117 nec7210_set_reg_bits(nec_priv, IMR2, HR_DMAI, 0);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 118
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 119 while (have_fifo_word(cb_priv)) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 @120 word = inw(cb_priv->fifo_iobase + DIR);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 121 buffer[(*bytes_read)++] = word & 0xff;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 122 buffer[(*bytes_read)++] = (word >> 8) & 0xff;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 123 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 124
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 125 cb_priv->in_fifo_half_full = 0;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 126
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 127 hs_status = cb7210_read_byte(cb_priv, HS_STATUS);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 128
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 129 spin_unlock_irqrestore(&board->spinlock, flags);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 130
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 131 if (test_and_clear_bit(RECEIVED_END_BN, &nec_priv->state)) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 132 *end = 1;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 133 break;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 134 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 135 if (hs_status & HS_FIFO_FULL)
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 136 break;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 137 if (test_bit(TIMO_NUM, &board->status)) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 138 retval = -ETIMEDOUT;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 139 break;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 140 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 141 if (test_bit(DEV_CLEAR_BN, &nec_priv->state)) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 142 retval = -EINTR;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 143 break;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 144 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 145 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 146 hs_status = cb7210_read_byte(cb_priv, HS_STATUS);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 147 if (hs_status & HS_RX_LSB_NOT_EMPTY) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 148 word = inw(cb_priv->fifo_iobase + DIR);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 149 buffer[(*bytes_read)++] = word & 0xff;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 150 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 151
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 152 input_fifo_enable(board, 0);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 153
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 154 if (wait_event_interruptible(board->wait,
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 155 test_bit(READ_READY_BN, &nec_priv->state) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 156 test_bit(RECEIVED_END_BN, &nec_priv->state) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 157 test_bit(DEV_CLEAR_BN, &nec_priv->state) ||
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 158 test_bit(TIMO_NUM, &board->status))) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 159 retval = -ERESTARTSYS;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 160 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 161 if (test_bit(TIMO_NUM, &board->status))
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 162 retval = -ETIMEDOUT;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 163 if (test_bit(DEV_CLEAR_BN, &nec_priv->state))
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 164 retval = -EINTR;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 165 if (test_bit(READ_READY_BN, &nec_priv->state)) {
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 166 nec7210_set_handshake_mode(board, nec_priv, HR_HLDA);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 167 buffer[(*bytes_read)++] = nec7210_read_data_in(board, nec_priv, end);
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 168 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 169
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 170 return retval;
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 171 }
e9dc69956d4d9b drivers/staging/gpib/cb7210/cb7210.c Dave Penkler 2024-09-18 172

:::::: The code at line 120 was first introduced by commit
:::::: e9dc69956d4d9bf4a81d35995ce9229ff5e4cad5 staging: gpib: Add Computer Boards GPIB driver

:::::: TO: Dave Penkler <dpenkler@xxxxxxxxx>
:::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

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