From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4477725765640936892==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [hch-misc:remove-scsi_request 3/3] drivers/usb/storage/cypress_atacb.c:180:27: error: assignment to expression with array type Date: Thu, 10 Feb 2022 19:13:54 +0800 Message-ID: <202202101930.FPTl9w8H-lkp@intel.com> List-Id: --===============4477725765640936892== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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/arc= hive/20220210/202202101930.FPTl9w8H-lkp(a)intel.com/config) compiler: h8300-linux-gcc (GCC) 11.2.0 reproduce (this is a W=3D1 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=3D$HOME/0day COMPILER=3Dgcc-11.2.0 make.cross= O=3Dbuild_dir ARCH=3Dh8300 SHELL=3D/bin/bash drivers/usb/storage/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/usb/storage/cypress_atacb.c: In function 'cypress_atacb_passthro= ugh': >> drivers/usb/storage/cypress_atacb.c:180:27: error: assignment to express= ion with array type 180 | srb->cmnd =3D 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 ove= r mass storage d277064e7e16d0 Matthieu CASTET 2008-03-19 69 * There is a ATACB2 protoc= ol 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.c= om. d277064e7e16d0 Matthieu CASTET 2008-03-19 72 */ fcdb51401f7f69 Alan Stern 2009-02-12 73 static void cypress_atacb_p= assthrough(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[MA= X_COMMAND_SIZE]; d277064e7e16d0 Matthieu CASTET 2008-03-19 76 = d277064e7e16d0 Matthieu CASTET 2008-03-19 77 if (likely(srb->cmnd[0] != =3D ATA_16 && srb->cmnd[0] !=3D 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->cmn= d, sizeof(save_cmnd)); 64a87b244b9297 Boaz Harrosh 2008-04-30 83 memset(srb->cmnd, 0, MAX_C= OMMAND_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 c= ommand */ d277064e7e16d0 Matthieu CASTET 2008-03-19 99 srb->cmd_len =3D 16; d277064e7e16d0 Matthieu CASTET 2008-03-19 100 = f0183a338e4f90 Felipe Balbi 2016-04-18 101 srb->cmnd[0] =3D 0x24; /* f0183a338e4f90 Felipe Balbi 2016-04-18 102 * bVSCBSignature := vendor-specific command f0183a338e4f90 Felipe Balbi 2016-04-18 103 * this value can c= hange, 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] =3D 0x24; /* = bVSCBSubCommand : 0x24 for ATACB */ d277064e7e16d0 Matthieu CASTET 2008-03-19 107 = f0183a338e4f90 Felipe Balbi 2016-04-18 108 srb->cmnd[3] =3D 0xff - 1;= /* f0183a338e4f90 Felipe Balbi 2016-04-18 109 * features, sector co= unt, lba low, lba med f0183a338e4f90 Felipe Balbi 2016-04-18 110 * lba high, device, c= ommand are valid f0183a338e4f90 Felipe Balbi 2016-04-18 111 */ d277064e7e16d0 Matthieu CASTET 2008-03-19 112 srb->cmnd[4] =3D 1; /* Tra= nsferBlockCount : 512 */ d277064e7e16d0 Matthieu CASTET 2008-03-19 113 = d277064e7e16d0 Matthieu CASTET 2008-03-19 114 if (save_cmnd[0] =3D=3D AT= A_16) { d277064e7e16d0 Matthieu CASTET 2008-03-19 115 srb->cmnd[ 6] =3D save_cm= nd[ 4]; /* features */ d277064e7e16d0 Matthieu CASTET 2008-03-19 116 srb->cmnd[ 7] =3D save_cm= nd[ 6]; /* sector count */ d277064e7e16d0 Matthieu CASTET 2008-03-19 117 srb->cmnd[ 8] =3D save_cm= nd[ 8]; /* lba low */ d277064e7e16d0 Matthieu CASTET 2008-03-19 118 srb->cmnd[ 9] =3D save_cm= nd[10]; /* lba med */ d277064e7e16d0 Matthieu CASTET 2008-03-19 119 srb->cmnd[10] =3D save_cm= nd[12]; /* lba high */ d277064e7e16d0 Matthieu CASTET 2008-03-19 120 srb->cmnd[11] =3D save_cm= nd[13]; /* device */ d277064e7e16d0 Matthieu CASTET 2008-03-19 121 srb->cmnd[12] =3D save_cm= nd[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 support= ed 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] =3D save_cm= nd[3]; /* features */ d277064e7e16d0 Matthieu CASTET 2008-03-19 131 srb->cmnd[ 7] =3D save_cm= nd[4]; /* sector count */ d277064e7e16d0 Matthieu CASTET 2008-03-19 132 srb->cmnd[ 8] =3D save_cm= nd[5]; /* lba low */ d277064e7e16d0 Matthieu CASTET 2008-03-19 133 srb->cmnd[ 9] =3D save_cm= nd[6]; /* lba med */ d277064e7e16d0 Matthieu CASTET 2008-03-19 134 srb->cmnd[10] =3D save_cm= nd[7]; /* lba high */ d277064e7e16d0 Matthieu CASTET 2008-03-19 135 srb->cmnd[11] =3D save_cm= nd[8]; /* device */ d277064e7e16d0 Matthieu CASTET 2008-03-19 136 srb->cmnd[12] =3D save_cm= nd[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 - X= FER MODE command */ d277064e7e16d0 Matthieu CASTET 2008-03-19 140 if ((srb->cmnd[12] =3D=3D = ATA_CMD_SET_FEATURES) d277064e7e16d0 Matthieu CASTET 2008-03-19 141 && (srb->cmnd[6] =3D=3D = 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] =3D=3D A= TA_CMD_ID_ATA || srb->cmnd[12] =3D=3D ATA_CMD_ID_ATAPI) d277064e7e16d0 Matthieu CASTET 2008-03-19 145 srb->cmnd[2] |=3D (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 s= upport ATACB */ d277064e7e16d0 Matthieu CASTET 2008-03-19 151 if (srb->result =3D=3D 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_i= nvalidCDB)) =3D=3D 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 !=3D (DID= _ERROR << 16) && d277064e7e16d0 Matthieu CASTET 2008-03-19 163 srb->result !=3D (DID_A= BORT << 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 =3D srb= ->sense_buffer; d277064e7e16d0 Matthieu CASTET 2008-03-19 168 unsigned char *desc =3D s= b + 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, &s= es, 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 comman= d 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 s= elected in srb->cmnd[4] d277064e7e16d0 Matthieu CASTET 2008-03-19 178 */ 1f4159c1620f74 Boaz Harrosh 2009-02-11 179 srb->cmd_len =3D 16; 1f4159c1620f74 Boaz Harrosh 2009-02-11 @180 srb->cmnd =3D ses.cmnd; d277064e7e16d0 Matthieu CASTET 2008-03-19 181 srb->cmnd[2] =3D 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_b= uffer, sizeof(regs)); d277064e7e16d0 Matthieu CASTET 2008-03-19 185 tmp_result =3D srb->resul= t; d277064e7e16d0 Matthieu CASTET 2008-03-19 186 scsi_eh_restore_cmnd(srb,= &ses); d277064e7e16d0 Matthieu CASTET 2008-03-19 187 /* we fail to get registe= rs, report invalid command */ d277064e7e16d0 Matthieu CASTET 2008-03-19 188 if (tmp_result !=3D SAM_S= TAT_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] =3D RECOVERED_ERROR; d277064e7e16d0 Matthieu CASTET 2008-03-19 196 sb[2] =3D 0; /* ATA PASS = THROUGH INFORMATION AVAILABLE */ d277064e7e16d0 Matthieu CASTET 2008-03-19 197 sb[3] =3D 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 transl= ation 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] =3D 0x72; d277064e7e16d0 Matthieu CASTET 2008-03-19 208 desc[0] =3D 0x09; /* ATA_= RETURN_DESCRIPTOR */ d277064e7e16d0 Matthieu CASTET 2008-03-19 209 = d277064e7e16d0 Matthieu CASTET 2008-03-19 210 /* set length of addition= al sense data */ d277064e7e16d0 Matthieu CASTET 2008-03-19 211 sb[7] =3D 14; d277064e7e16d0 Matthieu CASTET 2008-03-19 212 desc[1] =3D 12; d277064e7e16d0 Matthieu CASTET 2008-03-19 213 = d277064e7e16d0 Matthieu CASTET 2008-03-19 214 /* Copy registers into se= nse buffer. */ d277064e7e16d0 Matthieu CASTET 2008-03-19 215 desc[ 2] =3D 0x00; d277064e7e16d0 Matthieu CASTET 2008-03-19 216 desc[ 3] =3D regs[1]; /*= features */ d277064e7e16d0 Matthieu CASTET 2008-03-19 217 desc[ 5] =3D regs[2]; /*= sector count */ d277064e7e16d0 Matthieu CASTET 2008-03-19 218 desc[ 7] =3D regs[3]; /*= lba low */ d277064e7e16d0 Matthieu CASTET 2008-03-19 219 desc[ 9] =3D regs[4]; /*= lba med */ d277064e7e16d0 Matthieu CASTET 2008-03-19 220 desc[11] =3D regs[5]; /*= lba high */ d277064e7e16d0 Matthieu CASTET 2008-03-19 221 desc[12] =3D regs[6]; /*= device */ d277064e7e16d0 Matthieu CASTET 2008-03-19 222 desc[13] =3D regs[7]; /*= command */ d277064e7e16d0 Matthieu CASTET 2008-03-19 223 = 464a00c9e0ad45 Hannes Reinecke 2021-04-27 224 srb->result =3D 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 =3D SAM_STAT_C= HECK_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_invalidCD= B, d277064e7e16d0 Matthieu CASTET 2008-03-19 232 sizeof(usb_stor_sense_in= validCDB)); d277064e7e16d0 Matthieu CASTET 2008-03-19 233 end: d277064e7e16d0 Matthieu CASTET 2008-03-19 234 memcpy(srb->cmnd, save_cmn= d, sizeof(save_cmnd)); d277064e7e16d0 Matthieu CASTET 2008-03-19 235 if (srb->cmnd[0] =3D=3D AT= A_12) d277064e7e16d0 Matthieu CASTET 2008-03-19 236 srb->cmd_len =3D 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_CYPRES= S_ATACB :::::: TO: Boaz Harrosh :::::: CC: Greg Kroah-Hartman --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============4477725765640936892==--