Re: [PATCH 05/19] sg: replace rq array with lists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Douglas,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on next-20190524]
[cannot apply to v5.2-rc1]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Douglas-Gilbert/sg-v4-interface-rq-sharing-multiple-rqs/20190525-161346
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   drivers/scsi/sg.c: In function 'sg_ioctl':
>> drivers/scsi/sg.c:1698:1: warning: the frame size of 5824 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    }
    ^

vim +1698 drivers/scsi/sg.c

c5ad643d Douglas Gilbert   2019-05-24  1465  
c5ad643d Douglas Gilbert   2019-05-24  1466  static long
c5ad643d Douglas Gilbert   2019-05-24  1467  sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
c5ad643d Douglas Gilbert   2019-05-24  1468  {
c5ad643d Douglas Gilbert   2019-05-24  1469  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
c5ad643d Douglas Gilbert   2019-05-24  1470  	bool check_detach = false;
c5ad643d Douglas Gilbert   2019-05-24  1471  	int val;
c5ad643d Douglas Gilbert   2019-05-24  1472  	int result = 0;
c5ad643d Douglas Gilbert   2019-05-24  1473  	void __user *p = uptr64(arg);
c5ad643d Douglas Gilbert   2019-05-24  1474  	int __user *ip = p;
c5ad643d Douglas Gilbert   2019-05-24  1475  	struct sg_device *sdp;
c5ad643d Douglas Gilbert   2019-05-24  1476  	struct sg_fd *sfp;
c5ad643d Douglas Gilbert   2019-05-24  1477  	struct sg_request *srp;
c5ad643d Douglas Gilbert   2019-05-24  1478  	struct scsi_device *sdev;
c5ad643d Douglas Gilbert   2019-05-24  1479  	__maybe_unused const char *pmlp = ", pass to mid-level";
c5ad643d Douglas Gilbert   2019-05-24  1480  
c5ad643d Douglas Gilbert   2019-05-24  1481  	sfp = filp->private_data;
c5ad643d Douglas Gilbert   2019-05-24  1482  	sdp = sfp->parentdp;
c5ad643d Douglas Gilbert   2019-05-24  1483  	SG_LOG(6, sdp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
c5ad643d Douglas Gilbert   2019-05-24  1484  	       !!(filp->f_flags & O_NONBLOCK));
c5ad643d Douglas Gilbert   2019-05-24  1485  	if (!sdp)
c5ad643d Douglas Gilbert   2019-05-24  1486  		return -ENXIO;
c5ad643d Douglas Gilbert   2019-05-24  1487  	if (unlikely(atomic_read(&sdp->detaching)))
c5ad643d Douglas Gilbert   2019-05-24  1488  		return -ENODEV;
c5ad643d Douglas Gilbert   2019-05-24  1489  	sdev = sdp->device;
c5ad643d Douglas Gilbert   2019-05-24  1490  
c5ad643d Douglas Gilbert   2019-05-24  1491  	switch (cmd_in) {
c5ad643d Douglas Gilbert   2019-05-24  1492  	case SG_IO:
c5ad643d Douglas Gilbert   2019-05-24  1493  		return sg_ctl_sg_io(filp, sdp, sfp, p);
c5ad643d Douglas Gilbert   2019-05-24  1494  	case SG_GET_SCSI_ID:
c5ad643d Douglas Gilbert   2019-05-24  1495  		return sg_ctl_scsi_id(sdev, sdp, p);
^1da177e Linus Torvalds    2005-04-16  1496  	case SG_SET_FORCE_PACK_ID:
c5ad643d Douglas Gilbert   2019-05-24  1497  		SG_LOG(3, sdp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1498  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1499  		if (result)
^1da177e Linus Torvalds    2005-04-16  1500  			return result;
c5ad643d Douglas Gilbert   2019-05-24  1501  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1502  		return 0;
c5ad643d Douglas Gilbert   2019-05-24  1503  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
c5ad643d Douglas Gilbert   2019-05-24  1504  		rcu_read_lock();
c5ad643d Douglas Gilbert   2019-05-24  1505  		val = -1;
c5ad643d Douglas Gilbert   2019-05-24  1506  		list_for_each_entry_rcu(srp, &sfp->rq_list, rq_entry) {
c5ad643d Douglas Gilbert   2019-05-24  1507  			if (SG_RS_AWAIT_READ(srp) &&
c5ad643d Douglas Gilbert   2019-05-24  1508  			    !test_bit(SG_FRQ_SYNC_INVOC, srp->frq_bm)) {
c5ad643d Douglas Gilbert   2019-05-24  1509  				val = srp->pack_id;
c5ad643d Douglas Gilbert   2019-05-24  1510  				break;
^1da177e Linus Torvalds    2005-04-16  1511  			}
^1da177e Linus Torvalds    2005-04-16  1512  		}
c5ad643d Douglas Gilbert   2019-05-24  1513  		rcu_read_unlock();
c5ad643d Douglas Gilbert   2019-05-24  1514  		SG_LOG(3, sdp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
c5ad643d Douglas Gilbert   2019-05-24  1515  		return put_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1516  	case SG_GET_NUM_WAITING:
c5ad643d Douglas Gilbert   2019-05-24  1517  		/* SG_GET_NUM_WAITING + num_inflight == SG_SEIRV_SUBMITTED */
c5ad643d Douglas Gilbert   2019-05-24  1518  		val = atomic_read(&sfp->waiting);
c5ad643d Douglas Gilbert   2019-05-24  1519  		SG_LOG(3, sdp, "%s:    SG_GET_NUM_WAITING=%d\n", __func__,
c5ad643d Douglas Gilbert   2019-05-24  1520  		       val);
^1da177e Linus Torvalds    2005-04-16  1521  		return put_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1522  	case SG_GET_SG_TABLESIZE:
c5ad643d Douglas Gilbert   2019-05-24  1523  		SG_LOG(3, sdp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
c5ad643d Douglas Gilbert   2019-05-24  1524  		       sdp->max_sgat_elems);
c5ad643d Douglas Gilbert   2019-05-24  1525  		return put_user(sdp->max_sgat_elems, ip);
^1da177e Linus Torvalds    2005-04-16  1526  	case SG_SET_RESERVED_SIZE:
1bc0eb04 Hannes Reinecke   2017-04-07  1527  		mutex_lock(&sfp->f_mutex);
c5ad643d Douglas Gilbert   2019-05-24  1528  		result = get_user(val, ip);
c5ad643d Douglas Gilbert   2019-05-24  1529  		if (!result) {
c5ad643d Douglas Gilbert   2019-05-24  1530  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
c5ad643d Douglas Gilbert   2019-05-24  1531  				result = sg_set_reserved_sz(sfp, val);
c5ad643d Douglas Gilbert   2019-05-24  1532  			} else {
c5ad643d Douglas Gilbert   2019-05-24  1533  				SG_LOG(3, sdp, "%s: invalid size\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1534  				result = -EINVAL;
1bc0eb04 Hannes Reinecke   2017-04-07  1535  			}
^1da177e Linus Torvalds    2005-04-16  1536  		}
1bc0eb04 Hannes Reinecke   2017-04-07  1537  		mutex_unlock(&sfp->f_mutex);
c5ad643d Douglas Gilbert   2019-05-24  1538  		return result;
^1da177e Linus Torvalds    2005-04-16  1539  	case SG_GET_RESERVED_SIZE:
c5ad643d Douglas Gilbert   2019-05-24  1540  		mutex_lock(&sfp->f_mutex);
c5ad643d Douglas Gilbert   2019-05-24  1541  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
c5ad643d Douglas Gilbert   2019-05-24  1542  			    sdp->max_sgat_sz);
c5ad643d Douglas Gilbert   2019-05-24  1543  		SG_LOG(3, sdp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
c5ad643d Douglas Gilbert   2019-05-24  1544  		       __func__, val);
c5ad643d Douglas Gilbert   2019-05-24  1545  		result = put_user(val, ip);
c5ad643d Douglas Gilbert   2019-05-24  1546  		mutex_unlock(&sfp->f_mutex);
c5ad643d Douglas Gilbert   2019-05-24  1547  		return result;
^1da177e Linus Torvalds    2005-04-16  1548  	case SG_SET_COMMAND_Q:
c5ad643d Douglas Gilbert   2019-05-24  1549  		SG_LOG(3, sdp, "%s:    SG_SET_COMMAND_Q\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1550  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1551  		if (result)
^1da177e Linus Torvalds    2005-04-16  1552  			return result;
c5ad643d Douglas Gilbert   2019-05-24  1553  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1554  		return 0;
^1da177e Linus Torvalds    2005-04-16  1555  	case SG_GET_COMMAND_Q:
c5ad643d Douglas Gilbert   2019-05-24  1556  		SG_LOG(3, sdp, "%s:    SG_GET_COMMAND_Q\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1557  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
^1da177e Linus Torvalds    2005-04-16  1558  	case SG_SET_KEEP_ORPHAN:
c5ad643d Douglas Gilbert   2019-05-24  1559  		SG_LOG(3, sdp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1560  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1561  		if (result)
^1da177e Linus Torvalds    2005-04-16  1562  			return result;
c5ad643d Douglas Gilbert   2019-05-24  1563  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1564  		return 0;
^1da177e Linus Torvalds    2005-04-16  1565  	case SG_GET_KEEP_ORPHAN:
c5ad643d Douglas Gilbert   2019-05-24  1566  		SG_LOG(3, sdp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1567  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
c5ad643d Douglas Gilbert   2019-05-24  1568  				ip);
c5ad643d Douglas Gilbert   2019-05-24  1569  	case SG_GET_VERSION_NUM:
c5ad643d Douglas Gilbert   2019-05-24  1570  		SG_LOG(3, sdp, "%s:    SG_GET_VERSION_NUM\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1571  		return put_user(sg_version_num, ip);
c5ad643d Douglas Gilbert   2019-05-24  1572  	case SG_GET_REQUEST_TABLE:
c5ad643d Douglas Gilbert   2019-05-24  1573  		return sg_ctl_req_tbl(sfp, p);
c5ad643d Douglas Gilbert   2019-05-24  1574  	case SG_SCSI_RESET:
c5ad643d Douglas Gilbert   2019-05-24  1575  		SG_LOG(3, sdp, "%s:    SG_SCSI_RESET\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1576  		check_detach = true;
c5ad643d Douglas Gilbert   2019-05-24  1577  		break;
c5ad643d Douglas Gilbert   2019-05-24  1578  	case SG_SET_TIMEOUT:
c5ad643d Douglas Gilbert   2019-05-24  1579  		SG_LOG(3, sdp, "%s:    SG_SET_TIMEOUT\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1580  		result = get_user(val, ip);
c5ad643d Douglas Gilbert   2019-05-24  1581  		if (result)
c5ad643d Douglas Gilbert   2019-05-24  1582  			return result;
c5ad643d Douglas Gilbert   2019-05-24  1583  		if (val < 0)
c5ad643d Douglas Gilbert   2019-05-24  1584  			return -EIO;
c5ad643d Douglas Gilbert   2019-05-24  1585  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
c5ad643d Douglas Gilbert   2019-05-24  1586  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
c5ad643d Douglas Gilbert   2019-05-24  1587  				    INT_MAX);
c5ad643d Douglas Gilbert   2019-05-24  1588  		sfp->timeout_user = val;
c5ad643d Douglas Gilbert   2019-05-24  1589  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
c5ad643d Douglas Gilbert   2019-05-24  1590  		return 0;
c5ad643d Douglas Gilbert   2019-05-24  1591  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
c5ad643d Douglas Gilbert   2019-05-24  1592  				/* strange ..., for backward compatibility */
c5ad643d Douglas Gilbert   2019-05-24  1593  		SG_LOG(3, sdp, "%s:    SG_GET_TIMEOUT\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1594  		return sfp->timeout_user;
c5ad643d Douglas Gilbert   2019-05-24  1595  	case SG_SET_FORCE_LOW_DMA:
c5ad643d Douglas Gilbert   2019-05-24  1596  		/*
c5ad643d Douglas Gilbert   2019-05-24  1597  		 * N.B. This ioctl never worked properly, but failed to
c5ad643d Douglas Gilbert   2019-05-24  1598  		 * return an error value. So returning '0' to keep
c5ad643d Douglas Gilbert   2019-05-24  1599  		 * compatibility with legacy applications.
c5ad643d Douglas Gilbert   2019-05-24  1600  		 */
c5ad643d Douglas Gilbert   2019-05-24  1601  		SG_LOG(3, sdp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1602  		return 0;
c5ad643d Douglas Gilbert   2019-05-24  1603  	case SG_GET_LOW_DMA:
c5ad643d Douglas Gilbert   2019-05-24  1604  		SG_LOG(3, sdp, "%s:    SG_GET_LOW_DMA\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1605  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
c5ad643d Douglas Gilbert   2019-05-24  1606  	case SG_NEXT_CMD_LEN:   /* active only in v2 interface */
c5ad643d Douglas Gilbert   2019-05-24  1607  		SG_LOG(3, sdp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1608  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1609  		if (result)
^1da177e Linus Torvalds    2005-04-16  1610  			return result;
bf33f87d peter chang       2017-02-15  1611  		if (val > SG_MAX_CDB_SIZE)
bf33f87d peter chang       2017-02-15  1612  			return -ENOMEM;
c5ad643d Douglas Gilbert   2019-05-24  1613  		mutex_lock(&sfp->f_mutex);
c5ad643d Douglas Gilbert   2019-05-24  1614  		sfp->next_cmd_len = max_t(int, val, 0);
c5ad643d Douglas Gilbert   2019-05-24  1615  		mutex_unlock(&sfp->f_mutex);
^1da177e Linus Torvalds    2005-04-16  1616  		return 0;
^1da177e Linus Torvalds    2005-04-16  1617  	case SG_GET_ACCESS_COUNT:
c5ad643d Douglas Gilbert   2019-05-24  1618  		SG_LOG(3, sdp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1619  		/* faked - we don't have a real access count anymore */
c5ad643d Douglas Gilbert   2019-05-24  1620  		val = (sdev ? 1 : 0);
^1da177e Linus Torvalds    2005-04-16  1621  		return put_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1622  	case SG_EMULATED_HOST:
c5ad643d Douglas Gilbert   2019-05-24  1623  		SG_LOG(3, sdp, "%s:    SG_EMULATED_HOST\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1624  		if (unlikely(atomic_read(&sdp->detaching)))
^1da177e Linus Torvalds    2005-04-16  1625  			return -ENODEV;
c5ad643d Douglas Gilbert   2019-05-24  1626  		return put_user(sdev->host->hostt->emulated, ip);
^1da177e Linus Torvalds    2005-04-16  1627  	case SCSI_IOCTL_SEND_COMMAND:
c5ad643d Douglas Gilbert   2019-05-24  1628  		SG_LOG(3, sdp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1629  		if (unlikely(atomic_read(&sdp->detaching)))
^1da177e Linus Torvalds    2005-04-16  1630  			return -ENODEV;
c5ad643d Douglas Gilbert   2019-05-24  1631  		return sg_scsi_ioctl(sdev->request_queue, NULL,
c5ad643d Douglas Gilbert   2019-05-24  1632  				     filp->f_mode, p);
^1da177e Linus Torvalds    2005-04-16  1633  	case SG_SET_DEBUG:
c5ad643d Douglas Gilbert   2019-05-24  1634  		SG_LOG(3, sdp, "%s:    SG_SET_DEBUG\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1635  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1636  		if (result)
^1da177e Linus Torvalds    2005-04-16  1637  			return result;
c5ad643d Douglas Gilbert   2019-05-24  1638  		sdp->sgdebug = (u8)val;
^1da177e Linus Torvalds    2005-04-16  1639  		return 0;
44ec9542 Alan Stern        2007-02-20  1640  	case BLKSECTGET:
c5ad643d Douglas Gilbert   2019-05-24  1641  		SG_LOG(3, sdp, "%s:    BLKSECTGET\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1642  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
6da127ad Christof Schmitt  2008-01-11  1643  	case BLKTRACESETUP:
c5ad643d Douglas Gilbert   2019-05-24  1644  		SG_LOG(3, sdp, "%s:    BLKTRACESETUP\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1645  		return blk_trace_setup(sdev->request_queue,
6da127ad Christof Schmitt  2008-01-11  1646  				       sdp->disk->disk_name,
76e3a19d Martin Peschke    2009-01-30  1647  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
7475c8ae Bart Van Assche   2017-08-25  1648  				       NULL, p);
6da127ad Christof Schmitt  2008-01-11  1649  	case BLKTRACESTART:
c5ad643d Douglas Gilbert   2019-05-24  1650  		SG_LOG(3, sdp, "%s:    BLKTRACESTART\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1651  		return blk_trace_startstop(sdev->request_queue, 1);
6da127ad Christof Schmitt  2008-01-11  1652  	case BLKTRACESTOP:
c5ad643d Douglas Gilbert   2019-05-24  1653  		SG_LOG(3, sdp, "%s:    BLKTRACESTOP\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1654  		return blk_trace_startstop(sdev->request_queue, 0);
6da127ad Christof Schmitt  2008-01-11  1655  	case BLKTRACETEARDOWN:
c5ad643d Douglas Gilbert   2019-05-24  1656  		SG_LOG(3, sdp, "%s:    BLKTRACETEARDOWN\n", __func__);
c5ad643d Douglas Gilbert   2019-05-24  1657  		return blk_trace_remove(sdev->request_queue);
906d15fb Christoph Hellwig 2014-10-11  1658  	case SCSI_IOCTL_GET_IDLUN:
c5ad643d Douglas Gilbert   2019-05-24  1659  		SG_LOG(3, sdp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
c5ad643d Douglas Gilbert   2019-05-24  1660  		       pmlp);
c5ad643d Douglas Gilbert   2019-05-24  1661  		check_detach = true;
c5ad643d Douglas Gilbert   2019-05-24  1662  		break;
906d15fb Christoph Hellwig 2014-10-11  1663  	case SCSI_IOCTL_GET_BUS_NUMBER:
c5ad643d Douglas Gilbert   2019-05-24  1664  		SG_LOG(3, sdp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
c5ad643d Douglas Gilbert   2019-05-24  1665  		       __func__, pmlp);
c5ad643d Douglas Gilbert   2019-05-24  1666  		check_detach = true;
c5ad643d Douglas Gilbert   2019-05-24  1667  		break;
906d15fb Christoph Hellwig 2014-10-11  1668  	case SCSI_IOCTL_PROBE_HOST:
c5ad643d Douglas Gilbert   2019-05-24  1669  		SG_LOG(3, sdp, "%s:    SCSI_IOCTL_PROBE_HOST%s\n", __func__,
c5ad643d Douglas Gilbert   2019-05-24  1670  		       pmlp);
c5ad643d Douglas Gilbert   2019-05-24  1671  		check_detach = true;
c5ad643d Douglas Gilbert   2019-05-24  1672  		break;
906d15fb Christoph Hellwig 2014-10-11  1673  	case SG_GET_TRANSFORM:
c5ad643d Douglas Gilbert   2019-05-24  1674  		SG_LOG(3, sdp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
c5ad643d Douglas Gilbert   2019-05-24  1675  		check_detach = true;
c5ad643d Douglas Gilbert   2019-05-24  1676  		break;
c5ad643d Douglas Gilbert   2019-05-24  1677  	case SG_SET_TRANSFORM:
c5ad643d Douglas Gilbert   2019-05-24  1678  		SG_LOG(3, sdp, "%s:    SG_SET_TRANSFORM%s\n", __func__, pmlp);
c5ad643d Douglas Gilbert   2019-05-24  1679  		check_detach = true;
906d15fb Christoph Hellwig 2014-10-11  1680  		break;
^1da177e Linus Torvalds    2005-04-16  1681  	default:
c5ad643d Douglas Gilbert   2019-05-24  1682  		SG_LOG(3, sdp, "%s:    unrecognized ioctl [0x%x]%s\n",
c5ad643d Douglas Gilbert   2019-05-24  1683  		       __func__, cmd_in, pmlp);
^1da177e Linus Torvalds    2005-04-16  1684  		if (read_only)
c5ad643d Douglas Gilbert   2019-05-24  1685  			return -EPERM;  /* don't know, so take safer approach */
906d15fb Christoph Hellwig 2014-10-11  1686  		break;
^1da177e Linus Torvalds    2005-04-16  1687  	}
906d15fb Christoph Hellwig 2014-10-11  1688  
c5ad643d Douglas Gilbert   2019-05-24  1689  	if (check_detach) {
c5ad643d Douglas Gilbert   2019-05-24  1690  		if (unlikely(atomic_read(&sdp->detaching)))
c5ad643d Douglas Gilbert   2019-05-24  1691  			return -ENODEV;
c5ad643d Douglas Gilbert   2019-05-24  1692  	}
c5ad643d Douglas Gilbert   2019-05-24  1693  	result = sg_allow_if_err_recovery(sdp, (filp->f_flags & O_NDELAY));
906d15fb Christoph Hellwig 2014-10-11  1694  	if (result)
906d15fb Christoph Hellwig 2014-10-11  1695  		return result;
c5ad643d Douglas Gilbert   2019-05-24  1696  	/* ioctl that reach here are forwarded to the mid-level */
c5ad643d Douglas Gilbert   2019-05-24  1697  	return scsi_ioctl(sdev, cmd_in, p);
^1da177e Linus Torvalds    2005-04-16 @1698  }
^1da177e Linus Torvalds    2005-04-16  1699  

:::::: The code at line 1698 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@xxxxxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux