Re: [PATCH v2 17/18] sg: add sg_iosubmit_v3 and sg_ioreceive_v3 ioctls

[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 linus/master]
[also build test WARNING on v5.3-rc1 next-20190726]
[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-add-v4-interface/20190727-170351
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-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=arm 

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_v4_receive':
   drivers/scsi/sg.c:1126:18: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
     h4p->response = (u64)srp->s_hdr4.sbp;
                     ^
   drivers/scsi/sg.c: In function 'sg_find_srp_by_id':
   drivers/scsi/sg.c:3052:34: warning: 'bad_sr_st' may be used uninitialized in this function [-Wmaybe-uninitialized]
     __maybe_unused enum sg_rq_state bad_sr_st;
                                     ^~~~~~~~~
   drivers/scsi/sg.c: In function 'sg_ioctl':
>> drivers/scsi/sg.c:2006:1: warning: the frame size of 2160 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    }
    ^

vim +2006 drivers/scsi/sg.c

3dd41421 Douglas Gilbert   2019-07-26  1766  
3dd41421 Douglas Gilbert   2019-07-26  1767  static long
3dd41421 Douglas Gilbert   2019-07-26  1768  sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
3dd41421 Douglas Gilbert   2019-07-26  1769  {
3dd41421 Douglas Gilbert   2019-07-26  1770  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
3dd41421 Douglas Gilbert   2019-07-26  1771  	bool check_detach = false;
3dd41421 Douglas Gilbert   2019-07-26  1772  	int val;
3dd41421 Douglas Gilbert   2019-07-26  1773  	int result = 0;
3dd41421 Douglas Gilbert   2019-07-26  1774  	void __user *p = uptr64(arg);
3dd41421 Douglas Gilbert   2019-07-26  1775  	int __user *ip = p;
3dd41421 Douglas Gilbert   2019-07-26  1776  	struct sg_device *sdp;
3dd41421 Douglas Gilbert   2019-07-26  1777  	struct sg_fd *sfp;
3dd41421 Douglas Gilbert   2019-07-26  1778  	struct sg_request *srp;
3dd41421 Douglas Gilbert   2019-07-26  1779  	struct scsi_device *sdev;
3dd41421 Douglas Gilbert   2019-07-26  1780  	__maybe_unused const char *pmlp = ", pass to mid-level";
3dd41421 Douglas Gilbert   2019-07-26  1781  
3dd41421 Douglas Gilbert   2019-07-26  1782  	sfp = filp->private_data;
3dd41421 Douglas Gilbert   2019-07-26  1783  	sdp = sfp->parentdp;
3dd41421 Douglas Gilbert   2019-07-26  1784  	SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
3dd41421 Douglas Gilbert   2019-07-26  1785  	       !!(filp->f_flags & O_NONBLOCK));
3dd41421 Douglas Gilbert   2019-07-26  1786  	if (!sdp)
3dd41421 Douglas Gilbert   2019-07-26  1787  		return -ENXIO;
3dd41421 Douglas Gilbert   2019-07-26  1788  	if (unlikely(SG_IS_DETACHING(sdp)))
3dd41421 Douglas Gilbert   2019-07-26  1789  		return -ENODEV;
3dd41421 Douglas Gilbert   2019-07-26  1790  	sdev = sdp->device;
3dd41421 Douglas Gilbert   2019-07-26  1791  
3dd41421 Douglas Gilbert   2019-07-26  1792  	switch (cmd_in) {
3dd41421 Douglas Gilbert   2019-07-26  1793  	case SG_IO:
3dd41421 Douglas Gilbert   2019-07-26  1794  		return sg_ctl_sg_io(filp, sdp, sfp, p);
cf1c1047 Douglas Gilbert   2019-07-26  1795  	case SG_IOSUBMIT:
cf1c1047 Douglas Gilbert   2019-07-26  1796  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT\n", __func__);
cf1c1047 Douglas Gilbert   2019-07-26  1797  		return sg_ctl_iosubmit(filp, sfp, p);
2e815ed4 Douglas Gilbert   2019-07-26  1798  	case SG_IOSUBMIT_V3:
2e815ed4 Douglas Gilbert   2019-07-26  1799  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT_V3\n", __func__);
2e815ed4 Douglas Gilbert   2019-07-26  1800  		return sg_ctl_iosubmit_v3(filp, sfp, p);
cf1c1047 Douglas Gilbert   2019-07-26  1801  	case SG_IORECEIVE:
cf1c1047 Douglas Gilbert   2019-07-26  1802  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE\n", __func__);
cf1c1047 Douglas Gilbert   2019-07-26  1803  		return sg_ctl_ioreceive(filp, sfp, p);
2e815ed4 Douglas Gilbert   2019-07-26  1804  	case SG_IORECEIVE_V3:
2e815ed4 Douglas Gilbert   2019-07-26  1805  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE_V3\n", __func__);
2e815ed4 Douglas Gilbert   2019-07-26  1806  		return sg_ctl_ioreceive_v3(filp, sfp, p);
3dd41421 Douglas Gilbert   2019-07-26  1807  	case SG_GET_SCSI_ID:
3dd41421 Douglas Gilbert   2019-07-26  1808  		return sg_ctl_scsi_id(sdev, sfp, p);
^1da177e Linus Torvalds    2005-04-16  1809  	case SG_SET_FORCE_PACK_ID:
3dd41421 Douglas Gilbert   2019-07-26  1810  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1811  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1812  		if (result)
^1da177e Linus Torvalds    2005-04-16  1813  			return result;
3dd41421 Douglas Gilbert   2019-07-26  1814  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1815  		return 0;
3dd41421 Douglas Gilbert   2019-07-26  1816  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
3dd41421 Douglas Gilbert   2019-07-26  1817  		rcu_read_lock();
3dd41421 Douglas Gilbert   2019-07-26  1818  		val = -1;
3dd41421 Douglas Gilbert   2019-07-26  1819  		list_for_each_entry_rcu(srp, &sfp->rq_list, rq_entry) {
3dd41421 Douglas Gilbert   2019-07-26  1820  			if (SG_RS_AWAIT_READ(srp) &&
3dd41421 Douglas Gilbert   2019-07-26  1821  			    !test_bit(SG_FRQ_SYNC_INVOC, srp->frq_bm)) {
3dd41421 Douglas Gilbert   2019-07-26  1822  				val = srp->pack_id;
3dd41421 Douglas Gilbert   2019-07-26  1823  				break;
^1da177e Linus Torvalds    2005-04-16  1824  			}
^1da177e Linus Torvalds    2005-04-16  1825  		}
3dd41421 Douglas Gilbert   2019-07-26  1826  		rcu_read_unlock();
3dd41421 Douglas Gilbert   2019-07-26  1827  		SG_LOG(3, sfp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
3dd41421 Douglas Gilbert   2019-07-26  1828  		return put_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1829  	case SG_GET_NUM_WAITING:
3aa2a401 Douglas Gilbert   2019-07-26  1830  		return put_user(atomic_read(&sfp->waiting), ip);
^1da177e Linus Torvalds    2005-04-16  1831  	case SG_GET_SG_TABLESIZE:
3dd41421 Douglas Gilbert   2019-07-26  1832  		SG_LOG(3, sfp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
3dd41421 Douglas Gilbert   2019-07-26  1833  		       sdp->max_sgat_elems);
86e1d76d Douglas Gilbert   2019-07-26  1834  		return put_user(sdp->max_sgat_elems, ip);
^1da177e Linus Torvalds    2005-04-16  1835  	case SG_SET_RESERVED_SIZE:
1bc0eb04 Hannes Reinecke   2017-04-07  1836  		mutex_lock(&sfp->f_mutex);
3dd41421 Douglas Gilbert   2019-07-26  1837  		result = get_user(val, ip);
3dd41421 Douglas Gilbert   2019-07-26  1838  		if (!result) {
3dd41421 Douglas Gilbert   2019-07-26  1839  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
3dd41421 Douglas Gilbert   2019-07-26  1840  				result = sg_set_reserved_sz(sfp, val);
3dd41421 Douglas Gilbert   2019-07-26  1841  			} else {
3dd41421 Douglas Gilbert   2019-07-26  1842  				SG_LOG(3, sfp, "%s: invalid size\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1843  				result = -EINVAL;
1bc0eb04 Hannes Reinecke   2017-04-07  1844  			}
^1da177e Linus Torvalds    2005-04-16  1845  		}
1bc0eb04 Hannes Reinecke   2017-04-07  1846  		mutex_unlock(&sfp->f_mutex);
3dd41421 Douglas Gilbert   2019-07-26  1847  		return result;
^1da177e Linus Torvalds    2005-04-16  1848  	case SG_GET_RESERVED_SIZE:
3dd41421 Douglas Gilbert   2019-07-26  1849  		mutex_lock(&sfp->f_mutex);
3dd41421 Douglas Gilbert   2019-07-26  1850  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
3dd41421 Douglas Gilbert   2019-07-26  1851  			    sdp->max_sgat_sz);
3dd41421 Douglas Gilbert   2019-07-26  1852  		SG_LOG(3, sfp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
3dd41421 Douglas Gilbert   2019-07-26  1853  		       __func__, val);
3dd41421 Douglas Gilbert   2019-07-26  1854  		result = put_user(val, ip);
3dd41421 Douglas Gilbert   2019-07-26  1855  		mutex_unlock(&sfp->f_mutex);
3dd41421 Douglas Gilbert   2019-07-26  1856  		return result;
^1da177e Linus Torvalds    2005-04-16  1857  	case SG_SET_COMMAND_Q:
3dd41421 Douglas Gilbert   2019-07-26  1858  		SG_LOG(3, sfp, "%s:    SG_SET_COMMAND_Q\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1859  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1860  		if (result)
^1da177e Linus Torvalds    2005-04-16  1861  			return result;
3dd41421 Douglas Gilbert   2019-07-26  1862  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1863  		return 0;
^1da177e Linus Torvalds    2005-04-16  1864  	case SG_GET_COMMAND_Q:
3dd41421 Douglas Gilbert   2019-07-26  1865  		SG_LOG(3, sfp, "%s:    SG_GET_COMMAND_Q\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1866  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
^1da177e Linus Torvalds    2005-04-16  1867  	case SG_SET_KEEP_ORPHAN:
3dd41421 Douglas Gilbert   2019-07-26  1868  		SG_LOG(3, sfp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1869  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1870  		if (result)
^1da177e Linus Torvalds    2005-04-16  1871  			return result;
3dd41421 Douglas Gilbert   2019-07-26  1872  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1873  		return 0;
^1da177e Linus Torvalds    2005-04-16  1874  	case SG_GET_KEEP_ORPHAN:
3dd41421 Douglas Gilbert   2019-07-26  1875  		SG_LOG(3, sfp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1876  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
3dd41421 Douglas Gilbert   2019-07-26  1877  				ip);
3dd41421 Douglas Gilbert   2019-07-26  1878  	case SG_GET_VERSION_NUM:
3dd41421 Douglas Gilbert   2019-07-26  1879  		SG_LOG(3, sfp, "%s:    SG_GET_VERSION_NUM\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1880  		return put_user(sg_version_num, ip);
3dd41421 Douglas Gilbert   2019-07-26  1881  	case SG_GET_REQUEST_TABLE:
3dd41421 Douglas Gilbert   2019-07-26  1882  		return sg_ctl_req_tbl(sfp, p);
3dd41421 Douglas Gilbert   2019-07-26  1883  	case SG_SCSI_RESET:
3dd41421 Douglas Gilbert   2019-07-26  1884  		SG_LOG(3, sfp, "%s:    SG_SCSI_RESET\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1885  		check_detach = true;
3dd41421 Douglas Gilbert   2019-07-26  1886  		break;
3dd41421 Douglas Gilbert   2019-07-26  1887  	case SG_SET_TIMEOUT:
3dd41421 Douglas Gilbert   2019-07-26  1888  		SG_LOG(3, sfp, "%s:    SG_SET_TIMEOUT\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1889  		result = get_user(val, ip);
3dd41421 Douglas Gilbert   2019-07-26  1890  		if (result)
3dd41421 Douglas Gilbert   2019-07-26  1891  			return result;
3dd41421 Douglas Gilbert   2019-07-26  1892  		if (val < 0)
3dd41421 Douglas Gilbert   2019-07-26  1893  			return -EIO;
3dd41421 Douglas Gilbert   2019-07-26  1894  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
3dd41421 Douglas Gilbert   2019-07-26  1895  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
3dd41421 Douglas Gilbert   2019-07-26  1896  				    INT_MAX);
3dd41421 Douglas Gilbert   2019-07-26  1897  		sfp->timeout_user = val;
3dd41421 Douglas Gilbert   2019-07-26  1898  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
3dd41421 Douglas Gilbert   2019-07-26  1899  		return 0;
3dd41421 Douglas Gilbert   2019-07-26  1900  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
3dd41421 Douglas Gilbert   2019-07-26  1901  				/* strange ..., for backward compatibility */
3dd41421 Douglas Gilbert   2019-07-26  1902  		SG_LOG(3, sfp, "%s:    SG_GET_TIMEOUT\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1903  		return sfp->timeout_user;
3dd41421 Douglas Gilbert   2019-07-26  1904  	case SG_SET_FORCE_LOW_DMA:
3dd41421 Douglas Gilbert   2019-07-26  1905  		/*
3dd41421 Douglas Gilbert   2019-07-26  1906  		 * N.B. This ioctl never worked properly, but failed to
3dd41421 Douglas Gilbert   2019-07-26  1907  		 * return an error value. So returning '0' to keep
3dd41421 Douglas Gilbert   2019-07-26  1908  		 * compatibility with legacy applications.
3dd41421 Douglas Gilbert   2019-07-26  1909  		 */
3dd41421 Douglas Gilbert   2019-07-26  1910  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1911  		return 0;
3dd41421 Douglas Gilbert   2019-07-26  1912  	case SG_GET_LOW_DMA:
3dd41421 Douglas Gilbert   2019-07-26  1913  		SG_LOG(3, sfp, "%s:    SG_GET_LOW_DMA\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1914  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
3dd41421 Douglas Gilbert   2019-07-26  1915  	case SG_NEXT_CMD_LEN:   /* active only in v2 interface */
3dd41421 Douglas Gilbert   2019-07-26  1916  		SG_LOG(3, sfp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1917  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1918  		if (result)
^1da177e Linus Torvalds    2005-04-16  1919  			return result;
bf33f87d peter chang       2017-02-15  1920  		if (val > SG_MAX_CDB_SIZE)
bf33f87d peter chang       2017-02-15  1921  			return -ENOMEM;
3dd41421 Douglas Gilbert   2019-07-26  1922  		mutex_lock(&sfp->f_mutex);
3dd41421 Douglas Gilbert   2019-07-26  1923  		sfp->next_cmd_len = max_t(int, val, 0);
3dd41421 Douglas Gilbert   2019-07-26  1924  		mutex_unlock(&sfp->f_mutex);
^1da177e Linus Torvalds    2005-04-16  1925  		return 0;
^1da177e Linus Torvalds    2005-04-16  1926  	case SG_GET_ACCESS_COUNT:
3dd41421 Douglas Gilbert   2019-07-26  1927  		SG_LOG(3, sfp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1928  		/* faked - we don't have a real access count anymore */
3dd41421 Douglas Gilbert   2019-07-26  1929  		val = (sdev ? 1 : 0);
^1da177e Linus Torvalds    2005-04-16  1930  		return put_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1931  	case SG_EMULATED_HOST:
3dd41421 Douglas Gilbert   2019-07-26  1932  		SG_LOG(3, sfp, "%s:    SG_EMULATED_HOST\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1933  		if (unlikely(SG_IS_DETACHING(sdp)))
^1da177e Linus Torvalds    2005-04-16  1934  			return -ENODEV;
3dd41421 Douglas Gilbert   2019-07-26  1935  		return put_user(sdev->host->hostt->emulated, ip);
^1da177e Linus Torvalds    2005-04-16  1936  	case SCSI_IOCTL_SEND_COMMAND:
3dd41421 Douglas Gilbert   2019-07-26  1937  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1938  		if (unlikely(SG_IS_DETACHING(sdp)))
^1da177e Linus Torvalds    2005-04-16  1939  			return -ENODEV;
3dd41421 Douglas Gilbert   2019-07-26  1940  		return sg_scsi_ioctl(sdev->request_queue, NULL,
3dd41421 Douglas Gilbert   2019-07-26  1941  				     filp->f_mode, p);
^1da177e Linus Torvalds    2005-04-16  1942  	case SG_SET_DEBUG:
3dd41421 Douglas Gilbert   2019-07-26  1943  		SG_LOG(3, sfp, "%s:    SG_SET_DEBUG\n", __func__);
^1da177e Linus Torvalds    2005-04-16  1944  		result = get_user(val, ip);
^1da177e Linus Torvalds    2005-04-16  1945  		if (result)
^1da177e Linus Torvalds    2005-04-16  1946  			return result;
3dd41421 Douglas Gilbert   2019-07-26  1947  		assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val);
^1da177e Linus Torvalds    2005-04-16  1948  		return 0;
44ec9542 Alan Stern        2007-02-20  1949  	case BLKSECTGET:
3dd41421 Douglas Gilbert   2019-07-26  1950  		SG_LOG(3, sfp, "%s:    BLKSECTGET\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1951  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
6da127ad Christof Schmitt  2008-01-11  1952  	case BLKTRACESETUP:
3dd41421 Douglas Gilbert   2019-07-26  1953  		SG_LOG(3, sfp, "%s:    BLKTRACESETUP\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1954  		return blk_trace_setup(sdev->request_queue,
6da127ad Christof Schmitt  2008-01-11  1955  				       sdp->disk->disk_name,
76e3a19d Martin Peschke    2009-01-30  1956  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
7475c8ae Bart Van Assche   2017-08-25  1957  				       NULL, p);
6da127ad Christof Schmitt  2008-01-11  1958  	case BLKTRACESTART:
3dd41421 Douglas Gilbert   2019-07-26  1959  		SG_LOG(3, sfp, "%s:    BLKTRACESTART\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1960  		return blk_trace_startstop(sdev->request_queue, 1);
6da127ad Christof Schmitt  2008-01-11  1961  	case BLKTRACESTOP:
3dd41421 Douglas Gilbert   2019-07-26  1962  		SG_LOG(3, sfp, "%s:    BLKTRACESTOP\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1963  		return blk_trace_startstop(sdev->request_queue, 0);
6da127ad Christof Schmitt  2008-01-11  1964  	case BLKTRACETEARDOWN:
3dd41421 Douglas Gilbert   2019-07-26  1965  		SG_LOG(3, sfp, "%s:    BLKTRACETEARDOWN\n", __func__);
3dd41421 Douglas Gilbert   2019-07-26  1966  		return blk_trace_remove(sdev->request_queue);
906d15fb Christoph Hellwig 2014-10-11  1967  	case SCSI_IOCTL_GET_IDLUN:
3dd41421 Douglas Gilbert   2019-07-26  1968  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
3dd41421 Douglas Gilbert   2019-07-26  1969  		       pmlp);
3dd41421 Douglas Gilbert   2019-07-26  1970  		check_detach = true;
3dd41421 Douglas Gilbert   2019-07-26  1971  		break;
906d15fb Christoph Hellwig 2014-10-11  1972  	case SCSI_IOCTL_GET_BUS_NUMBER:
3dd41421 Douglas Gilbert   2019-07-26  1973  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
3dd41421 Douglas Gilbert   2019-07-26  1974  		       __func__, pmlp);
3dd41421 Douglas Gilbert   2019-07-26  1975  		check_detach = true;
3dd41421 Douglas Gilbert   2019-07-26  1976  		break;
906d15fb Christoph Hellwig 2014-10-11  1977  	case SCSI_IOCTL_PROBE_HOST:
3dd41421 Douglas Gilbert   2019-07-26  1978  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_PROBE_HOST%s\n", __func__,
3dd41421 Douglas Gilbert   2019-07-26  1979  		       pmlp);
3dd41421 Douglas Gilbert   2019-07-26  1980  		check_detach = true;
3dd41421 Douglas Gilbert   2019-07-26  1981  		break;
906d15fb Christoph Hellwig 2014-10-11  1982  	case SG_GET_TRANSFORM:
3dd41421 Douglas Gilbert   2019-07-26  1983  		SG_LOG(3, sfp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
3dd41421 Douglas Gilbert   2019-07-26  1984  		check_detach = true;
3dd41421 Douglas Gilbert   2019-07-26  1985  		break;
3dd41421 Douglas Gilbert   2019-07-26  1986  	case SG_SET_TRANSFORM:
3dd41421 Douglas Gilbert   2019-07-26  1987  		SG_LOG(3, sfp, "%s:    SG_SET_TRANSFORM%s\n", __func__, pmlp);
3dd41421 Douglas Gilbert   2019-07-26  1988  		check_detach = true;
906d15fb Christoph Hellwig 2014-10-11  1989  		break;
^1da177e Linus Torvalds    2005-04-16  1990  	default:
3dd41421 Douglas Gilbert   2019-07-26  1991  		SG_LOG(3, sfp, "%s:    unrecognized ioctl [0x%x]%s\n",
3dd41421 Douglas Gilbert   2019-07-26  1992  		       __func__, cmd_in, pmlp);
^1da177e Linus Torvalds    2005-04-16  1993  		if (read_only)
3dd41421 Douglas Gilbert   2019-07-26  1994  			return -EPERM;  /* don't know, so take safer approach */
906d15fb Christoph Hellwig 2014-10-11  1995  		break;
^1da177e Linus Torvalds    2005-04-16  1996  	}
906d15fb Christoph Hellwig 2014-10-11  1997  
3dd41421 Douglas Gilbert   2019-07-26  1998  	if (check_detach) {
3dd41421 Douglas Gilbert   2019-07-26  1999  		if (unlikely(SG_IS_DETACHING(sdp)))
3dd41421 Douglas Gilbert   2019-07-26  2000  			return -ENODEV;
3dd41421 Douglas Gilbert   2019-07-26  2001  	}
3dd41421 Douglas Gilbert   2019-07-26  2002  	/* ioctl that reach here are forwarded to the mid-level */
3dd41421 Douglas Gilbert   2019-07-26  2003  	if (likely(scsi_block_when_processing_errors(sdp->device)))
3dd41421 Douglas Gilbert   2019-07-26  2004  		return scsi_ioctl(sdev, cmd_in, p);
3dd41421 Douglas Gilbert   2019-07-26  2005  	return -ENXIO;
^1da177e Linus Torvalds    2005-04-16 @2006  }
^1da177e Linus Torvalds    2005-04-16  2007  

:::::: The code at line 2006 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