tree:
git://git.infradead.org/users/hch/misc.git remove-scsi_request
head: 5677caa4ec3d9eab6e96ed17cd19f3b82589caf0
commit: 5677caa4ec3d9eab6e96ed17cd19f3b82589caf0 [3/3] scsi: remove the cdb field from
struct scsi_request
config: h8300-randconfig-r035-20220210
(
https://download.01.org/0day-ci/archive/20220210/202202101930.FPTl9w8H-lk...)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git remote add hch-misc
git://git.infradead.org/users/hch/misc.git
git fetch --no-tags hch-misc remove-scsi_request
git checkout 5677caa4ec3d9eab6e96ed17cd19f3b82589caf0
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir
ARCH=h8300 SHELL=/bin/bash drivers/usb/storage/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/usb/storage/cypress_atacb.c: In function 'cypress_atacb_passthrough':
> drivers/usb/storage/cypress_atacb.c:180:27: error: assignment to
expression with array type
180 | srb->cmnd = ses.cmnd;
| ^
vim +180 drivers/usb/storage/cypress_atacb.c
fcdb51401f7f69 Alan Stern 2009-02-12 64
fcdb51401f7f69 Alan Stern 2009-02-12 65
d277064e7e16d0 Matthieu CASTET 2008-03-19 66 /*
d277064e7e16d0 Matthieu CASTET 2008-03-19 67 * ATACB is a protocol used on cypress
usb<->ata bridge to
d277064e7e16d0 Matthieu CASTET 2008-03-19 68 * send raw ATA command over mass storage
d277064e7e16d0 Matthieu CASTET 2008-03-19 69 * There is a ATACB2 protocol that support
LBA48 on newer chip.
d277064e7e16d0 Matthieu CASTET 2008-03-19 70 * More info that be found on
cy7c68310_8.pdf and cy7c68300c_8.pdf
d277064e7e16d0 Matthieu CASTET 2008-03-19 71 * datasheet from
cypress.com.
d277064e7e16d0 Matthieu CASTET 2008-03-19 72 */
fcdb51401f7f69 Alan Stern 2009-02-12 73 static void
cypress_atacb_passthrough(struct scsi_cmnd *srb, struct us_data *us)
d277064e7e16d0 Matthieu CASTET 2008-03-19 74 {
d277064e7e16d0 Matthieu CASTET 2008-03-19 75 unsigned char
save_cmnd[MAX_COMMAND_SIZE];
d277064e7e16d0 Matthieu CASTET 2008-03-19 76
d277064e7e16d0 Matthieu CASTET 2008-03-19 77 if (likely(srb->cmnd[0] != ATA_16
&& srb->cmnd[0] != ATA_12)) {
d277064e7e16d0 Matthieu CASTET 2008-03-19 78 usb_stor_transparent_scsi_command(srb,
us);
d277064e7e16d0 Matthieu CASTET 2008-03-19 79 return;
d277064e7e16d0 Matthieu CASTET 2008-03-19 80 }
d277064e7e16d0 Matthieu CASTET 2008-03-19 81
d277064e7e16d0 Matthieu CASTET 2008-03-19 82 memcpy(save_cmnd, srb->cmnd,
sizeof(save_cmnd));
64a87b244b9297 Boaz Harrosh 2008-04-30 83 memset(srb->cmnd, 0,
MAX_COMMAND_SIZE);
d277064e7e16d0 Matthieu CASTET 2008-03-19 84
d277064e7e16d0 Matthieu CASTET 2008-03-19 85 /* check if we support the command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 86 if (save_cmnd[1] >> 5) /*
MULTIPLE_COUNT */
d277064e7e16d0 Matthieu CASTET 2008-03-19 87 goto invalid_fld;
d277064e7e16d0 Matthieu CASTET 2008-03-19 88 /* check protocol */
d277064e7e16d0 Matthieu CASTET 2008-03-19 89 switch ((save_cmnd[1] >> 1) &
0xf) {
d277064e7e16d0 Matthieu CASTET 2008-03-19 90 case 3: /*no DATA */
d277064e7e16d0 Matthieu CASTET 2008-03-19 91 case 4: /* PIO in */
d277064e7e16d0 Matthieu CASTET 2008-03-19 92 case 5: /* PIO out */
d277064e7e16d0 Matthieu CASTET 2008-03-19 93 break;
d277064e7e16d0 Matthieu CASTET 2008-03-19 94 default:
d277064e7e16d0 Matthieu CASTET 2008-03-19 95 goto invalid_fld;
d277064e7e16d0 Matthieu CASTET 2008-03-19 96 }
d277064e7e16d0 Matthieu CASTET 2008-03-19 97
d277064e7e16d0 Matthieu CASTET 2008-03-19 98 /* first build the ATACB command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 99 srb->cmd_len = 16;
d277064e7e16d0 Matthieu CASTET 2008-03-19 100
f0183a338e4f90 Felipe Balbi 2016-04-18 101 srb->cmnd[0] = 0x24; /*
f0183a338e4f90 Felipe Balbi 2016-04-18 102 * bVSCBSignature :
vendor-specific command
f0183a338e4f90 Felipe Balbi 2016-04-18 103 * this value can change, but
most(all ?) manufacturers
f0183a338e4f90 Felipe Balbi 2016-04-18 104 * keep the cypress default :
0x24
f0183a338e4f90 Felipe Balbi 2016-04-18 105 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 106 srb->cmnd[1] = 0x24; /*
bVSCBSubCommand : 0x24 for ATACB */
d277064e7e16d0 Matthieu CASTET 2008-03-19 107
f0183a338e4f90 Felipe Balbi 2016-04-18 108 srb->cmnd[3] = 0xff - 1; /*
f0183a338e4f90 Felipe Balbi 2016-04-18 109 * features, sector count, lba low,
lba med
f0183a338e4f90 Felipe Balbi 2016-04-18 110 * lba high, device, command are
valid
f0183a338e4f90 Felipe Balbi 2016-04-18 111 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 112 srb->cmnd[4] = 1; /*
TransferBlockCount : 512 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 113
d277064e7e16d0 Matthieu CASTET 2008-03-19 114 if (save_cmnd[0] == ATA_16) {
d277064e7e16d0 Matthieu CASTET 2008-03-19 115 srb->cmnd[ 6] = save_cmnd[ 4]; /*
features */
d277064e7e16d0 Matthieu CASTET 2008-03-19 116 srb->cmnd[ 7] = save_cmnd[ 6]; /*
sector count */
d277064e7e16d0 Matthieu CASTET 2008-03-19 117 srb->cmnd[ 8] = save_cmnd[ 8]; /* lba
low */
d277064e7e16d0 Matthieu CASTET 2008-03-19 118 srb->cmnd[ 9] = save_cmnd[10]; /* lba
med */
d277064e7e16d0 Matthieu CASTET 2008-03-19 119 srb->cmnd[10] = save_cmnd[12]; /* lba
high */
d277064e7e16d0 Matthieu CASTET 2008-03-19 120 srb->cmnd[11] = save_cmnd[13]; /*
device */
d277064e7e16d0 Matthieu CASTET 2008-03-19 121 srb->cmnd[12] = save_cmnd[14]; /*
command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 122
d277064e7e16d0 Matthieu CASTET 2008-03-19 123 if (save_cmnd[1] & 0x01) {/*
extended bit set for LBA48 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 124 /* this could be supported by atacb2
*/
d277064e7e16d0 Matthieu CASTET 2008-03-19 125 if (save_cmnd[3] || save_cmnd[5] ||
save_cmnd[7] || save_cmnd[9]
d277064e7e16d0 Matthieu CASTET 2008-03-19 126 || save_cmnd[11])
d277064e7e16d0 Matthieu CASTET 2008-03-19 127 goto invalid_fld;
d277064e7e16d0 Matthieu CASTET 2008-03-19 128 }
e9c585907f962a Bas Peters 2015-02-07 129 } else { /* ATA12 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 130 srb->cmnd[ 6] = save_cmnd[3]; /*
features */
d277064e7e16d0 Matthieu CASTET 2008-03-19 131 srb->cmnd[ 7] = save_cmnd[4]; /*
sector count */
d277064e7e16d0 Matthieu CASTET 2008-03-19 132 srb->cmnd[ 8] = save_cmnd[5]; /* lba
low */
d277064e7e16d0 Matthieu CASTET 2008-03-19 133 srb->cmnd[ 9] = save_cmnd[6]; /* lba
med */
d277064e7e16d0 Matthieu CASTET 2008-03-19 134 srb->cmnd[10] = save_cmnd[7]; /* lba
high */
d277064e7e16d0 Matthieu CASTET 2008-03-19 135 srb->cmnd[11] = save_cmnd[8]; /*
device */
d277064e7e16d0 Matthieu CASTET 2008-03-19 136 srb->cmnd[12] = save_cmnd[9]; /*
command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 137
d277064e7e16d0 Matthieu CASTET 2008-03-19 138 }
d277064e7e16d0 Matthieu CASTET 2008-03-19 139 /* Filter SET_FEATURES - XFER MODE
command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 140 if ((srb->cmnd[12] ==
ATA_CMD_SET_FEATURES)
d277064e7e16d0 Matthieu CASTET 2008-03-19 141 && (srb->cmnd[6] ==
SETFEATURES_XFER))
d277064e7e16d0 Matthieu CASTET 2008-03-19 142 goto invalid_fld;
d277064e7e16d0 Matthieu CASTET 2008-03-19 143
d277064e7e16d0 Matthieu CASTET 2008-03-19 144 if (srb->cmnd[12] == ATA_CMD_ID_ATA ||
srb->cmnd[12] == ATA_CMD_ID_ATAPI)
d277064e7e16d0 Matthieu CASTET 2008-03-19 145 srb->cmnd[2] |= (1<<7); /* set
IdentifyPacketDevice for these cmds */
d277064e7e16d0 Matthieu CASTET 2008-03-19 146
d277064e7e16d0 Matthieu CASTET 2008-03-19 147
d277064e7e16d0 Matthieu CASTET 2008-03-19 148 usb_stor_transparent_scsi_command(srb,
us);
d277064e7e16d0 Matthieu CASTET 2008-03-19 149
f0183a338e4f90 Felipe Balbi 2016-04-18 150 /* if the device doesn't support
ATACB */
d277064e7e16d0 Matthieu CASTET 2008-03-19 151 if (srb->result ==
SAM_STAT_CHECK_CONDITION &&
d277064e7e16d0 Matthieu CASTET 2008-03-19 152 memcmp(srb->sense_buffer,
usb_stor_sense_invalidCDB,
d277064e7e16d0 Matthieu CASTET 2008-03-19 153 sizeof(usb_stor_sense_invalidCDB)) ==
0) {
191648d03d2022 Joe Perches 2013-04-19 154 usb_stor_dbg(us, "cypress atacb not
supported ???\n");
d277064e7e16d0 Matthieu CASTET 2008-03-19 155 goto end;
d277064e7e16d0 Matthieu CASTET 2008-03-19 156 }
d277064e7e16d0 Matthieu CASTET 2008-03-19 157
f0183a338e4f90 Felipe Balbi 2016-04-18 158 /*
f0183a338e4f90 Felipe Balbi 2016-04-18 159 * if ck_cond flags is set, and there
wasn't critical error,
d277064e7e16d0 Matthieu CASTET 2008-03-19 160 * build the special sense
d277064e7e16d0 Matthieu CASTET 2008-03-19 161 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 162 if ((srb->result != (DID_ERROR
<< 16) &&
d277064e7e16d0 Matthieu CASTET 2008-03-19 163 srb->result != (DID_ABORT <<
16)) &&
d277064e7e16d0 Matthieu CASTET 2008-03-19 164 save_cmnd[2] & 0x20) {
d277064e7e16d0 Matthieu CASTET 2008-03-19 165 struct scsi_eh_save ses;
d277064e7e16d0 Matthieu CASTET 2008-03-19 166 unsigned char regs[8];
d277064e7e16d0 Matthieu CASTET 2008-03-19 167 unsigned char *sb =
srb->sense_buffer;
d277064e7e16d0 Matthieu CASTET 2008-03-19 168 unsigned char *desc = sb + 8;
d277064e7e16d0 Matthieu CASTET 2008-03-19 169 int tmp_result;
d277064e7e16d0 Matthieu CASTET 2008-03-19 170
f0183a338e4f90 Felipe Balbi 2016-04-18 171 /* build the command for reading the ATA
registers */
1f4159c1620f74 Boaz Harrosh 2009-02-11 172 scsi_eh_prep_cmnd(srb, &ses, NULL,
0, sizeof(regs));
1f4159c1620f74 Boaz Harrosh 2009-02-11 173
f0183a338e4f90 Felipe Balbi 2016-04-18 174 /*
f0183a338e4f90 Felipe Balbi 2016-04-18 175 * we use the same command as before,
but we set
d277064e7e16d0 Matthieu CASTET 2008-03-19 176 * the read taskfile bit, for not
executing atacb command,
d277064e7e16d0 Matthieu CASTET 2008-03-19 177 * but reading register selected in
srb->cmnd[4]
d277064e7e16d0 Matthieu CASTET 2008-03-19 178 */
1f4159c1620f74 Boaz Harrosh 2009-02-11 179 srb->cmd_len = 16;
1f4159c1620f74 Boaz Harrosh 2009-02-11 @180 srb->cmnd = ses.cmnd;
d277064e7e16d0 Matthieu CASTET 2008-03-19 181 srb->cmnd[2] = 1;
d277064e7e16d0 Matthieu CASTET 2008-03-19 182
d277064e7e16d0 Matthieu CASTET 2008-03-19 183 usb_stor_transparent_scsi_command(srb,
us);
1f4159c1620f74 Boaz Harrosh 2009-02-11 184 memcpy(regs, srb->sense_buffer,
sizeof(regs));
d277064e7e16d0 Matthieu CASTET 2008-03-19 185 tmp_result = srb->result;
d277064e7e16d0 Matthieu CASTET 2008-03-19 186 scsi_eh_restore_cmnd(srb, &ses);
d277064e7e16d0 Matthieu CASTET 2008-03-19 187 /* we fail to get registers, report
invalid command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 188 if (tmp_result != SAM_STAT_GOOD)
d277064e7e16d0 Matthieu CASTET 2008-03-19 189 goto invalid_fld;
d277064e7e16d0 Matthieu CASTET 2008-03-19 190
d277064e7e16d0 Matthieu CASTET 2008-03-19 191 /* build the sense */
d277064e7e16d0 Matthieu CASTET 2008-03-19 192 memset(sb, 0, SCSI_SENSE_BUFFERSIZE);
d277064e7e16d0 Matthieu CASTET 2008-03-19 193
d277064e7e16d0 Matthieu CASTET 2008-03-19 194 /* set sk, asc for a good command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 195 sb[1] = RECOVERED_ERROR;
d277064e7e16d0 Matthieu CASTET 2008-03-19 196 sb[2] = 0; /* ATA PASS THROUGH
INFORMATION AVAILABLE */
d277064e7e16d0 Matthieu CASTET 2008-03-19 197 sb[3] = 0x1D;
d277064e7e16d0 Matthieu CASTET 2008-03-19 198
f0183a338e4f90 Felipe Balbi 2016-04-18 199 /*
f0183a338e4f90 Felipe Balbi 2016-04-18 200 * XXX we should generate sk, asc, ascq
from status and error
d277064e7e16d0 Matthieu CASTET 2008-03-19 201 * regs
1f4159c1620f74 Boaz Harrosh 2009-02-11 202 * (see 11.1 Error translation ATA
device error to SCSI error
1f4159c1620f74 Boaz Harrosh 2009-02-11 203 * map, and ata_to_sense_error from
libata.)
d277064e7e16d0 Matthieu CASTET 2008-03-19 204 */
d277064e7e16d0 Matthieu CASTET 2008-03-19 205
d277064e7e16d0 Matthieu CASTET 2008-03-19 206 /* Sense data is current and format is
descriptor. */
d277064e7e16d0 Matthieu CASTET 2008-03-19 207 sb[0] = 0x72;
d277064e7e16d0 Matthieu CASTET 2008-03-19 208 desc[0] = 0x09; /* ATA_RETURN_DESCRIPTOR
*/
d277064e7e16d0 Matthieu CASTET 2008-03-19 209
d277064e7e16d0 Matthieu CASTET 2008-03-19 210 /* set length of additional sense data
*/
d277064e7e16d0 Matthieu CASTET 2008-03-19 211 sb[7] = 14;
d277064e7e16d0 Matthieu CASTET 2008-03-19 212 desc[1] = 12;
d277064e7e16d0 Matthieu CASTET 2008-03-19 213
d277064e7e16d0 Matthieu CASTET 2008-03-19 214 /* Copy registers into sense buffer. */
d277064e7e16d0 Matthieu CASTET 2008-03-19 215 desc[ 2] = 0x00;
d277064e7e16d0 Matthieu CASTET 2008-03-19 216 desc[ 3] = regs[1]; /* features */
d277064e7e16d0 Matthieu CASTET 2008-03-19 217 desc[ 5] = regs[2]; /* sector count */
d277064e7e16d0 Matthieu CASTET 2008-03-19 218 desc[ 7] = regs[3]; /* lba low */
d277064e7e16d0 Matthieu CASTET 2008-03-19 219 desc[ 9] = regs[4]; /* lba med */
d277064e7e16d0 Matthieu CASTET 2008-03-19 220 desc[11] = regs[5]; /* lba high */
d277064e7e16d0 Matthieu CASTET 2008-03-19 221 desc[12] = regs[6]; /* device */
d277064e7e16d0 Matthieu CASTET 2008-03-19 222 desc[13] = regs[7]; /* command */
d277064e7e16d0 Matthieu CASTET 2008-03-19 223
464a00c9e0ad45 Hannes Reinecke 2021-04-27 224 srb->result =
SAM_STAT_CHECK_CONDITION;
d277064e7e16d0 Matthieu CASTET 2008-03-19 225 }
d277064e7e16d0 Matthieu CASTET 2008-03-19 226 goto end;
d277064e7e16d0 Matthieu CASTET 2008-03-19 227 invalid_fld:
464a00c9e0ad45 Hannes Reinecke 2021-04-27 228 srb->result =
SAM_STAT_CHECK_CONDITION;
d277064e7e16d0 Matthieu CASTET 2008-03-19 229
d277064e7e16d0 Matthieu CASTET 2008-03-19 230 memcpy(srb->sense_buffer,
d277064e7e16d0 Matthieu CASTET 2008-03-19 231 usb_stor_sense_invalidCDB,
d277064e7e16d0 Matthieu CASTET 2008-03-19 232 sizeof(usb_stor_sense_invalidCDB));
d277064e7e16d0 Matthieu CASTET 2008-03-19 233 end:
d277064e7e16d0 Matthieu CASTET 2008-03-19 234 memcpy(srb->cmnd, save_cmnd,
sizeof(save_cmnd));
d277064e7e16d0 Matthieu CASTET 2008-03-19 235 if (srb->cmnd[0] == ATA_12)
d277064e7e16d0 Matthieu CASTET 2008-03-19 236 srb->cmd_len = 12;
d277064e7e16d0 Matthieu CASTET 2008-03-19 237 }
fcdb51401f7f69 Alan Stern 2009-02-12 238
:::::: The code at line 180 was first introduced by commit
:::::: 1f4159c1620f74377e26d8a569d10ca5907ef475 USB: fix USB_STORAGE_CYPRESS_ATACB
:::::: TO: Boaz Harrosh <bharrosh(a)panasas.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org