tree:
git://git.infradead.org/users/hch/misc.git remove-scsi_request
head: d8fd889c4c1f73165ec38da54e2c10bfe795686b
commit: 17cfefd0e27007b007c4650e76537805abfe18ed [4/8] scsi: remove the cmd field from
struct scsi_request
config: arm-randconfig-c002-20220213
(
https://download.01.org/0day-ci/archive/20220214/202202140045.5lpcLNP9-lk...)
compiler: clang version 15.0.0 (
https://github.com/llvm/llvm-project
ea071884b0cc7210b3cc5fe858f0e892a779a23b)
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
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
git remote add hch-misc
git://git.infradead.org/users/hch/misc.git
git fetch --no-tags hch-misc remove-scsi_request
git checkout 17cfefd0e27007b007c4650e76537805abfe18ed
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir
ARCH=arm SHELL=/bin/bash drivers/scsi/
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/scsi/scsi_logging.c:90:22: error: address of array
'scmd->cmnd' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]
if (!scmd || !scmd->cmnd)
~~~~~~~^~~~
> drivers/scsi/scsi_logging.c:186:12: error: address of array
'cmd->cmnd' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]
if (!cmd->cmnd)
~~~~~~^~~~
2 errors generated.
vim +90 drivers/scsi/scsi_logging.c
ded85c193a391a Hannes Reinecke 2015-01-08 82
9c4a6b1e428013 Hannes Reinecke 2015-02-04 83 void scmd_printk(const char *level,
const struct scsi_cmnd *scmd,
ded85c193a391a Hannes Reinecke 2015-01-08 84 const char *fmt, ...)
ded85c193a391a Hannes Reinecke 2015-01-08 85 {
ded85c193a391a Hannes Reinecke 2015-01-08 86 va_list args;
ded85c193a391a Hannes Reinecke 2015-01-08 87 char *logbuf;
ded85c193a391a Hannes Reinecke 2015-01-08 88 size_t off = 0, logbuf_len;
ded85c193a391a Hannes Reinecke 2015-01-08 89
ded85c193a391a Hannes Reinecke 2015-01-08 @90 if (!scmd || !scmd->cmnd)
9c4a6b1e428013 Hannes Reinecke 2015-02-04 91 return;
ded85c193a391a Hannes Reinecke 2015-01-08 92
ded85c193a391a Hannes Reinecke 2015-01-08 93 logbuf =
scsi_log_reserve_buffer(&logbuf_len);
ded85c193a391a Hannes Reinecke 2015-01-08 94 if (!logbuf)
9c4a6b1e428013 Hannes Reinecke 2015-02-04 95 return;
2104551969e801 Hannes Reinecke 2015-01-08 96 off = sdev_format_header(logbuf,
logbuf_len, scmd_name(scmd),
aa8e25e5006aac Bart Van Assche 2021-08-09 97 scsi_cmd_to_rq((struct scsi_cmnd
*)scmd)->tag);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 98 if (off < logbuf_len) {
ded85c193a391a Hannes Reinecke 2015-01-08 99 va_start(args, fmt);
ded85c193a391a Hannes Reinecke 2015-01-08 100 off += vscnprintf(logbuf + off,
logbuf_len - off, fmt, args);
ded85c193a391a Hannes Reinecke 2015-01-08 101 va_end(args);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 102 }
9c4a6b1e428013 Hannes Reinecke 2015-02-04 103 dev_printk(level,
&scmd->device->sdev_gendev, "%s", logbuf);
ded85c193a391a Hannes Reinecke 2015-01-08 104 scsi_log_release_buffer(logbuf);
ded85c193a391a Hannes Reinecke 2015-01-08 105 }
ded85c193a391a Hannes Reinecke 2015-01-08 106 EXPORT_SYMBOL(scmd_printk);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 107
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 108 static size_t
scsi_format_opcode_name(char *buffer, size_t buf_len,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 109 const unsigned char *cdbp)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 110 {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 111 int sa, cdb0;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 112 const char *cdb_name = NULL, *sa_name =
NULL;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 113 size_t off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 114
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 115 cdb0 = cdbp[0];
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 116 if (cdb0 == VARIABLE_LENGTH_CMD) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 117 int len =
scsi_varlen_cdb_length(cdbp);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 118
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 119 if (len < 10) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 120 off = scnprintf(buffer, buf_len,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 121 "short variable length
command, len=%d",
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 122 len);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 123 return off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 124 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 125 sa = (cdbp[8] << 8) + cdbp[9];
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 126 } else
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 127 sa = cdbp[1] & 0x1f;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 128
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 129 if (!scsi_opcode_sa_name(cdb0, sa,
&cdb_name, &sa_name)) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 130 if (cdb_name)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 131 off = scnprintf(buffer, buf_len,
"%s", cdb_name);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 132 else {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 133 off = scnprintf(buffer, buf_len,
"opcode=0x%x", cdb0);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 134 if (WARN_ON(off >= buf_len))
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 135 return off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 136 if (cdb0 >= VENDOR_SPECIFIC_CDB)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 137 off += scnprintf(buffer + off,
buf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 138 " (vendor)");
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 139 else if (cdb0 >= 0x60 &&
cdb0 < 0x7e)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 140 off += scnprintf(buffer + off,
buf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 141 " (reserved)");
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 142 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 143 } else {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 144 if (sa_name)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 145 off = scnprintf(buffer, buf_len,
"%s", sa_name);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 146 else if (cdb_name)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 147 off = scnprintf(buffer, buf_len,
"%s, sa=0x%x",
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 148 cdb_name, sa);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 149 else
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 150 off = scnprintf(buffer, buf_len,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 151 "opcode=0x%x, sa=0x%x",
cdb0, sa);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 152 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 153 WARN_ON(off >= buf_len);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 154 return off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 155 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 156
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 157 size_t __scsi_format_command(char
*logbuf, size_t logbuf_len,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 158 const unsigned char *cdb, size_t
cdb_len)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 159 {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 160 int len, k;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 161 size_t off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 162
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 163 off = scsi_format_opcode_name(logbuf,
logbuf_len, cdb);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 164 if (off >= logbuf_len)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 165 return off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 166 len = scsi_command_size(cdb);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 167 if (cdb_len < len)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 168 len = cdb_len;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 169 /* print out all bytes in cdb */
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 170 for (k = 0; k < len; ++k) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 171 if (off > logbuf_len - 3)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 172 break;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 173 off += scnprintf(logbuf + off,
logbuf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 174 " %02x", cdb[k]);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 175 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 176 return off;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 177 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 178 EXPORT_SYMBOL(__scsi_format_command);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 179
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 180 void scsi_print_command(struct scsi_cmnd
*cmd)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 181 {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 182 int k;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 183 char *logbuf;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 184 size_t off, logbuf_len;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 185
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 @186 if (!cmd->cmnd)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 187 return;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 188
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 189 logbuf =
scsi_log_reserve_buffer(&logbuf_len);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 190 if (!logbuf)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 191 return;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 192
2104551969e801 Hannes Reinecke 2015-01-08 193 off = sdev_format_header(logbuf,
logbuf_len,
aa8e25e5006aac Bart Van Assche 2021-08-09 194 scmd_name(cmd),
scsi_cmd_to_rq(cmd)->tag);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 195 if (off >= logbuf_len)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 196 goto out_printk;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 197 off += scnprintf(logbuf + off,
logbuf_len - off, "CDB: ");
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 198 if (WARN_ON(off >= logbuf_len))
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 199 goto out_printk;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 200
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 201 off += scsi_format_opcode_name(logbuf +
off, logbuf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 202 cmd->cmnd);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 203 if (off >= logbuf_len)
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 204 goto out_printk;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 205
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 206 /* print out all bytes in cdb */
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 207 if (cmd->cmd_len > 16) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 208 /* Print opcode in one line and use
separate lines for CDB */
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 209 off += scnprintf(logbuf + off,
logbuf_len - off, "\n");
2fc583c4628bf7 Christoph Hellwig 2015-01-18 210 dev_printk(KERN_INFO,
&cmd->device->sdev_gendev, "%s", logbuf);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 211 for (k = 0; k < cmd->cmd_len; k
+= 16) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 212 size_t linelen = min(cmd->cmd_len
- k, 16);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 213
2104551969e801 Hannes Reinecke 2015-01-08 214 off = sdev_format_header(logbuf,
logbuf_len,
2104551969e801 Hannes Reinecke 2015-01-08 215 scmd_name(cmd),
aa8e25e5006aac Bart Van Assche 2021-08-09 216 scsi_cmd_to_rq(cmd)->tag);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 217 if (!WARN_ON(off > logbuf_len -
58)) {
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 218 off += scnprintf(logbuf + off,
logbuf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 219 "CDB[%02x]: ", k);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 220
hex_dump_to_buffer(&cmd->cmnd[k], linelen,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 221 16, 1, logbuf + off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 222 logbuf_len - off, false);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 223 }
2fc583c4628bf7 Christoph Hellwig 2015-01-18 224 dev_printk(KERN_INFO,
&cmd->device->sdev_gendev, "%s",
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 225 logbuf);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 226 }
811f39479c0c2d Ye Bin 2020-07-17 227 goto out;
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 228 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 229 if (!WARN_ON(off > logbuf_len - 49))
{
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 230 off += scnprintf(logbuf + off,
logbuf_len - off, " ");
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 231 hex_dump_to_buffer(cmd->cmnd,
cmd->cmd_len, 16, 1,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 232 logbuf + off, logbuf_len - off,
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 233 false);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 234 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 235 out_printk:
2fc583c4628bf7 Christoph Hellwig 2015-01-18 236 dev_printk(KERN_INFO,
&cmd->device->sdev_gendev, "%s", logbuf);
811f39479c0c2d Ye Bin 2020-07-17 237 out:
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 238 scsi_log_release_buffer(logbuf);
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 239 }
9e5ed2a5b3662c Hannes Reinecke 2015-01-08 240 EXPORT_SYMBOL(scsi_print_command);
2104551969e801 Hannes Reinecke 2015-01-08 241
:::::: The code at line 90 was first introduced by commit
:::::: ded85c193a391a84076d5c6a7a5668fe164a490e scsi: Implement per-cpu logging buffer
:::::: TO: Hannes Reinecke <hare(a)suse.de>
:::::: CC: Christoph Hellwig <hch(a)lst.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org