tree:   https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git 
scsi-result-rework
head:   19720ea7b22b443a182646eef7edc36e32e7b515
commit: 650e66d86e623824cc550f1b8411951116a6b6ea [8/146] scsi: Kill DRIVER_SENSE
config: i386-randconfig-m021-20210421 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/scsi/sg.c:501 sg_read() warn: this array is probably non-NULL. 
'srp->sense_b'
drivers/scsi/sg.c:579 sg_new_read() warn: this array is probably non-NULL. 
'srp->sense_b'

Old smatch warnings:
drivers/scsi/sg.c:484 sg_read() error: we previously assumed 'srp' could be 
null (see line 470)
drivers/scsi/sg.c:1100 sg_ioctl_common() warn: inconsistent indenting

vim +501 drivers/scsi/sg.c

^1da177e4c3f41 Linus Torvalds  2005-04-16  440  static ssize_t
^1da177e4c3f41 Linus Torvalds  2005-04-16  441  sg_read(struct file *filp, char 
__user *buf, size_t count, loff_t * ppos)
^1da177e4c3f41 Linus Torvalds  2005-04-16  442  {
^1da177e4c3f41 Linus Torvalds  2005-04-16  443          Sg_device *sdp;
^1da177e4c3f41 Linus Torvalds  2005-04-16  444          Sg_fd *sfp;
^1da177e4c3f41 Linus Torvalds  2005-04-16  445          Sg_request *srp;
^1da177e4c3f41 Linus Torvalds  2005-04-16  446          int req_pack_id = -1;
^1da177e4c3f41 Linus Torvalds  2005-04-16  447          sg_io_hdr_t *hp;
78ed001d9e7106 Arnd Bergmann   2019-12-04  448          struct sg_header 
*old_hdr;
78ed001d9e7106 Arnd Bergmann   2019-12-04  449          int retval;
^1da177e4c3f41 Linus Torvalds  2005-04-16  450  
26b5b874aff565 Jann Horn       2018-06-25  451          /*
26b5b874aff565 Jann Horn       2018-06-25  452           * This could cause a 
response to be stranded. Close the associated
26b5b874aff565 Jann Horn       2018-06-25  453           * file descriptor to 
free up any resources being held.
26b5b874aff565 Jann Horn       2018-06-25  454           */
26b5b874aff565 Jann Horn       2018-06-25  455          retval = 
sg_check_file_access(filp, __func__);
26b5b874aff565 Jann Horn       2018-06-25  456          if (retval)
26b5b874aff565 Jann Horn       2018-06-25  457                  return retval;
26b5b874aff565 Jann Horn       2018-06-25  458  
^1da177e4c3f41 Linus Torvalds  2005-04-16  459          if ((!(sfp = (Sg_fd *) 
filp->private_data)) || (!(sdp = sfp->parentdp)))
^1da177e4c3f41 Linus Torvalds  2005-04-16  460                  return -ENXIO;
95e159d6dd808b Hannes Reinecke 2014-06-25  461          SCSI_LOG_TIMEOUT(3, 
sg_printk(KERN_INFO, sdp,
95e159d6dd808b Hannes Reinecke 2014-06-25  462                                  
      "sg_read: count=%d\n", (int) count));
d6b10348f93979 Mike Christie   2005-11-08  463  
78ed001d9e7106 Arnd Bergmann   2019-12-04  464          if (sfp->force_packid)
78ed001d9e7106 Arnd Bergmann   2019-12-04  465                  retval = 
get_sg_io_pack_id(&req_pack_id, buf, count);
78ed001d9e7106 Arnd Bergmann   2019-12-04  466          if (retval)
78ed001d9e7106 Arnd Bergmann   2019-12-04  467                  return retval;
78ed001d9e7106 Arnd Bergmann   2019-12-04  468  
^1da177e4c3f41 Linus Torvalds  2005-04-16  469          srp = 
sg_get_rq_mark(sfp, req_pack_id);
^1da177e4c3f41 Linus Torvalds  2005-04-16  470          if (!srp) {             
/* now wait on packet to arrive */
78ed001d9e7106 Arnd Bergmann   2019-12-04  471                  if 
(atomic_read(&sdp->detaching))
78ed001d9e7106 Arnd Bergmann   2019-12-04  472                          return 
-ENODEV;
78ed001d9e7106 Arnd Bergmann   2019-12-04  473                  if 
(filp->f_flags & O_NONBLOCK)
78ed001d9e7106 Arnd Bergmann   2019-12-04  474                          return 
-EAGAIN;
3f0c6aba0b65a6 Jörn Engel      2012-04-12  475                  retval = 
wait_event_interruptible(sfp->read_wait,
cc833acbee9db5 Douglas Gilbert 2014-06-25  476                          
(atomic_read(&sdp->detaching) ||
3f0c6aba0b65a6 Jörn Engel      2012-04-12  477                          (srp = 
sg_get_rq_mark(sfp, req_pack_id))));
78ed001d9e7106 Arnd Bergmann   2019-12-04  478                  if 
(atomic_read(&sdp->detaching))
78ed001d9e7106 Arnd Bergmann   2019-12-04  479                          return 
-ENODEV;
78ed001d9e7106 Arnd Bergmann   2019-12-04  480                  if (retval)
cb59e840838193 Douglas Gilbert 2005-04-02  481                          /* 
-ERESTARTSYS as signal hit process */
78ed001d9e7106 Arnd Bergmann   2019-12-04  482                          return 
retval;
^1da177e4c3f41 Linus Torvalds  2005-04-16  483          }
78ed001d9e7106 Arnd Bergmann   2019-12-04  484          if 
(srp->header.interface_id != '\0')
78ed001d9e7106 Arnd Bergmann   2019-12-04  485                  return 
sg_new_read(sfp, buf, count, srp);
^1da177e4c3f41 Linus Torvalds  2005-04-16  486  
^1da177e4c3f41 Linus Torvalds  2005-04-16  487          hp = &srp->header;
78ed001d9e7106 Arnd Bergmann   2019-12-04  488          old_hdr = 
kzalloc(SZ_SG_HEADER, GFP_KERNEL);
78ed001d9e7106 Arnd Bergmann   2019-12-04  489          if (!old_hdr)
78ed001d9e7106 Arnd Bergmann   2019-12-04  490                  return -ENOMEM;
78ed001d9e7106 Arnd Bergmann   2019-12-04  491  
cb59e840838193 Douglas Gilbert 2005-04-02  492          old_hdr->reply_len = 
(int) hp->timeout;
cb59e840838193 Douglas Gilbert 2005-04-02  493          old_hdr->pack_len = 
old_hdr->reply_len; /* old, strange behaviour */
cb59e840838193 Douglas Gilbert 2005-04-02  494          old_hdr->pack_id = 
hp->pack_id;
cb59e840838193 Douglas Gilbert 2005-04-02  495          old_hdr->twelve_byte =
^1da177e4c3f41 Linus Torvalds  2005-04-16  496              
((srp->data.cmd_opcode >= 0xc0) && (12 == hp->cmd_len)) ? 1 : 0;
cb59e840838193 Douglas Gilbert 2005-04-02  497          old_hdr->target_status 
= hp->masked_status;
cb59e840838193 Douglas Gilbert 2005-04-02  498          old_hdr->host_status = 
hp->host_status;
cb59e840838193 Douglas Gilbert 2005-04-02  499          old_hdr->driver_status 
= hp->driver_status;
^1da177e4c3f41 Linus Torvalds  2005-04-16  500          if ((CHECK_CONDITION & 
hp->masked_status) ||
650e66d86e6238 Hannes Reinecke 2019-10-21 @501              (srp->sense_b && 
(srp->sense_b[0] & 0x70) == 0x70)) {
                                                             ^^^^^^^^^^^^
This can't be NULL.

650e66d86e6238 Hannes Reinecke 2019-10-21  502                  
old_hdr->driver_status |= DRIVER_SENSE;
cb59e840838193 Douglas Gilbert 2005-04-02  503                  
memcpy(old_hdr->sense_buffer, srp->sense_b,
cb59e840838193 Douglas Gilbert 2005-04-02  504                         sizeof 
(old_hdr->sense_buffer));
650e66d86e6238 Hannes Reinecke 2019-10-21  505          }
^1da177e4c3f41 Linus Torvalds  2005-04-16  506          switch 
(hp->host_status) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  507          /* This setup of 
'result' is for backward compatibility and is best
^1da177e4c3f41 Linus Torvalds  2005-04-16  508             ignored by the user 
who should use target, host + driver status */
^1da177e4c3f41 Linus Torvalds  2005-04-16  509          case DID_OK:
^1da177e4c3f41 Linus Torvalds  2005-04-16  510          case DID_PASSTHROUGH:
^1da177e4c3f41 Linus Torvalds  2005-04-16  511          case DID_SOFT_ERROR:
cb59e840838193 Douglas Gilbert 2005-04-02  512                  old_hdr->result 
= 0;
^1da177e4c3f41 Linus Torvalds  2005-04-16  513                  break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  514          case DID_NO_CONNECT:
^1da177e4c3f41 Linus Torvalds  2005-04-16  515          case DID_BUS_BUSY:
^1da177e4c3f41 Linus Torvalds  2005-04-16  516          case DID_TIME_OUT:
cb59e840838193 Douglas Gilbert 2005-04-02  517                  old_hdr->result 
= EBUSY;
^1da177e4c3f41 Linus Torvalds  2005-04-16  518                  break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  519          case DID_BAD_TARGET:
^1da177e4c3f41 Linus Torvalds  2005-04-16  520          case DID_ABORT:
^1da177e4c3f41 Linus Torvalds  2005-04-16  521          case DID_PARITY:
^1da177e4c3f41 Linus Torvalds  2005-04-16  522          case DID_RESET:
^1da177e4c3f41 Linus Torvalds  2005-04-16  523          case DID_BAD_INTR:
cb59e840838193 Douglas Gilbert 2005-04-02  524                  old_hdr->result 
= EIO;
^1da177e4c3f41 Linus Torvalds  2005-04-16  525                  break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  526          case DID_ERROR:
cb59e840838193 Douglas Gilbert 2005-04-02  527                  old_hdr->result 
= (srp->sense_b[0] == 0 && 
^1da177e4c3f41 Linus Torvalds  2005-04-16  528                                  
  hp->masked_status == GOOD) ? 0 : EIO;
^1da177e4c3f41 Linus Torvalds  2005-04-16  529                  break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  530          default:
cb59e840838193 Douglas Gilbert 2005-04-02  531                  old_hdr->result 
= EIO;
^1da177e4c3f41 Linus Torvalds  2005-04-16  532                  break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  533          }
^1da177e4c3f41 Linus Torvalds  2005-04-16  534  
^1da177e4c3f41 Linus Torvalds  2005-04-16  535          /* Now copy the result 
back to the user buffer.  */
^1da177e4c3f41 Linus Torvalds  2005-04-16  536          if (count >= 
SZ_SG_HEADER) {
c8c12792d5fe11 Al Viro         2019-10-17  537                  if 
(copy_to_user(buf, old_hdr, SZ_SG_HEADER)) {
cb59e840838193 Douglas Gilbert 2005-04-02  538                          retval 
= -EFAULT;
cb59e840838193 Douglas Gilbert 2005-04-02  539                          goto 
free_old_hdr;
cb59e840838193 Douglas Gilbert 2005-04-02  540                  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  541                  buf += 
SZ_SG_HEADER;
cb59e840838193 Douglas Gilbert 2005-04-02  542                  if (count > 
old_hdr->reply_len)
cb59e840838193 Douglas Gilbert 2005-04-02  543                          count = 
old_hdr->reply_len;
^1da177e4c3f41 Linus Torvalds  2005-04-16  544                  if (count > 
SZ_SG_HEADER) {
cb59e840838193 Douglas Gilbert 2005-04-02  545                          if 
(sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) {
cb59e840838193 Douglas Gilbert 2005-04-02  546                                  
retval = -EFAULT;
cb59e840838193 Douglas Gilbert 2005-04-02  547                                  
goto free_old_hdr;
cb59e840838193 Douglas Gilbert 2005-04-02  548                          }
^1da177e4c3f41 Linus Torvalds  2005-04-16  549                  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  550          } else
cb59e840838193 Douglas Gilbert 2005-04-02  551                  count = 
(old_hdr->result == 0) ? 0 : -EIO;
^1da177e4c3f41 Linus Torvalds  2005-04-16  552          sg_finish_rem_req(srp);
97d27b0dd015e9 Hannes Reinecke 2017-04-07  553          sg_remove_request(sfp, 
srp);
cb59e840838193 Douglas Gilbert 2005-04-02  554          retval = count;
cb59e840838193 Douglas Gilbert 2005-04-02  555  free_old_hdr:
cb59e840838193 Douglas Gilbert 2005-04-02  556          kfree(old_hdr);
cb59e840838193 Douglas Gilbert 2005-04-02  557          return retval;
^1da177e4c3f41 Linus Torvalds  2005-04-16  558  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  559  
^1da177e4c3f41 Linus Torvalds  2005-04-16  560  static ssize_t
^1da177e4c3f41 Linus Torvalds  2005-04-16  561  sg_new_read(Sg_fd * sfp, char 
__user *buf, size_t count, Sg_request * srp)
^1da177e4c3f41 Linus Torvalds  2005-04-16  562  {
^1da177e4c3f41 Linus Torvalds  2005-04-16  563          sg_io_hdr_t *hp = 
&srp->header;
3b524a683af899 Tony Battersby  2015-02-11  564          int err = 0, err2;
^1da177e4c3f41 Linus Torvalds  2005-04-16  565          int len;
^1da177e4c3f41 Linus Torvalds  2005-04-16  566  
78ed001d9e7106 Arnd Bergmann   2019-12-04  567          if 
(in_compat_syscall()) {
78ed001d9e7106 Arnd Bergmann   2019-12-04  568                  if (count < 
sizeof(struct compat_sg_io_hdr)) {
78ed001d9e7106 Arnd Bergmann   2019-12-04  569                          err = 
-EINVAL;
78ed001d9e7106 Arnd Bergmann   2019-12-04  570                          goto 
err_out;
78ed001d9e7106 Arnd Bergmann   2019-12-04  571                  }
78ed001d9e7106 Arnd Bergmann   2019-12-04  572          } else if (count < 
SZ_SG_IO_HDR) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  573                  err = -EINVAL;
^1da177e4c3f41 Linus Torvalds  2005-04-16  574                  goto err_out;
^1da177e4c3f41 Linus Torvalds  2005-04-16  575          }
^1da177e4c3f41 Linus Torvalds  2005-04-16  576          hp->sb_len_wr = 0;
^1da177e4c3f41 Linus Torvalds  2005-04-16  577          if ((hp->mx_sb_len > 0) 
&& hp->sbp) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  578                  if 
((CHECK_CONDITION & hp->masked_status) ||
650e66d86e6238 Hannes Reinecke 2019-10-21 @579                      
(srp->sense_b && (srp->sense_b[0] & 0x70) == 0x70)) {
                                                                     
^^^^^^^^^^^^

d6b10348f93979 Mike Christie   2005-11-08  580                          int 
sb_len = SCSI_SENSE_BUFFERSIZE;
^1da177e4c3f41 Linus Torvalds  2005-04-16  581                          sb_len 
= (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len;
^1da177e4c3f41 Linus Torvalds  2005-04-16  582                          len = 8 
+ (int) srp->sense_b[7];        /* Additional sense length field */
^1da177e4c3f41 Linus Torvalds  2005-04-16  583                          len = 
(len > sb_len) ? sb_len : len;
^1da177e4c3f41 Linus Torvalds  2005-04-16  584                          if 
(copy_to_user(hp->sbp, srp->sense_b, len)) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  585                                  
err = -EFAULT;
^1da177e4c3f41 Linus Torvalds  2005-04-16  586                                  
goto err_out;
650e66d86e6238 Hannes Reinecke 2019-10-21  587                          } else
650e66d86e6238 Hannes Reinecke 2019-10-21  588                                  
hp->driver_status |= DRIVER_SENSE;
^1da177e4c3f41 Linus Torvalds  2005-04-16  589                          
hp->sb_len_wr = len;
^1da177e4c3f41 Linus Torvalds  2005-04-16  590                  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  591          }
^1da177e4c3f41 Linus Torvalds  2005-04-16  592          if (hp->masked_status 
|| hp->host_status || hp->driver_status)
^1da177e4c3f41 Linus Torvalds  2005-04-16  593                  hp->info |= 
SG_INFO_CHECK;
98aaaec4a150c3 Arnd Bergmann   2019-03-14  594          err = put_sg_io_hdr(hp, 
buf);
^1da177e4c3f41 Linus Torvalds  2005-04-16  595  err_out:
3b524a683af899 Tony Battersby  2015-02-11  596          err2 = 
sg_finish_rem_req(srp);
97d27b0dd015e9 Hannes Reinecke 2017-04-07  597          sg_remove_request(sfp, 
srp);
3b524a683af899 Tony Battersby  2015-02-11  598          return err ? : err2 ? : 
count;
^1da177e4c3f41 Linus Torvalds  2005-04-16  599  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to