All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes
@ 2021-03-12 12:38 ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-03-12 12:38 UTC (permalink / raw)
  To: Douglas Gilbert
  Cc: kbuild-all, Linux Memory Management List, Martin K. Petersen,
	Hannes Reinecke

[-- Attachment #1: Type: text/plain, Size: 20596 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d98f554b318f57ded14684c04b3337a1975cf490
commit: ed130bcd75fe26da9165d0a9f9df931aa8c47fc9 [2408/4141] scsi: sg: Track lowest inactive and await indexes
config: arm-randconfig-r036-20210312 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

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


vim +2198 drivers/scsi/sg.c

c99d01af2aa92f Douglas Gilbert   2021-02-19  1978  
37b9d1e0017b2d Jörn Engel        2012-04-12  1979  static long
da0b8f731b3ccc Douglas Gilbert   2021-02-19  1980  sg_ioctl_common(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp,
d320a9551e394c Arnd Bergmann     2019-03-15  1981  		unsigned int cmd_in, void __user *p)
^1da177e4c3f41 Linus Torvalds    2005-04-16  1982  {
c99d01af2aa92f Douglas Gilbert   2021-02-19  1983  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
c99d01af2aa92f Douglas Gilbert   2021-02-19  1984  	int val;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1985  	int result = 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  1986  	int __user *ip = p;
da0b8f731b3ccc Douglas Gilbert   2021-02-19  1987  	struct sg_request *srp;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1988  	struct scsi_device *sdev;
763d5d3c1d381f Douglas Gilbert   2021-02-19  1989  	unsigned long idx;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1990  	__maybe_unused const char *pmlp = ", pass to mid-level";
^1da177e4c3f41 Linus Torvalds    2005-04-16  1991  
b0d532124dd2c2 Douglas Gilbert   2021-02-19  1992  	SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
b0d532124dd2c2 Douglas Gilbert   2021-02-19  1993  	       !!(filp->f_flags & O_NONBLOCK));
c99d01af2aa92f Douglas Gilbert   2021-02-19  1994  	if (unlikely(SG_IS_DETACHING(sdp)))
c99d01af2aa92f Douglas Gilbert   2021-02-19  1995  		return -ENODEV;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1996  	sdev = sdp->device;
^1da177e4c3f41 Linus Torvalds    2005-04-16  1997  
^1da177e4c3f41 Linus Torvalds    2005-04-16  1998  	switch (cmd_in) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  1999  	case SG_IO:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2000  		return sg_ctl_sg_io(filp, sdp, sfp, p);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2001  	case SG_IOSUBMIT:
bb2e50421582c8 Douglas Gilbert   2021-02-19  2002  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT\n", __func__);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2003  		return sg_ctl_iosubmit(filp, sfp, p);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2004  	case SG_IOSUBMIT_V3:
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2005  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT_V3\n", __func__);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2006  		return sg_ctl_iosubmit_v3(filp, sfp, p);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2007  	case SG_IORECEIVE:
bb2e50421582c8 Douglas Gilbert   2021-02-19  2008  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE\n", __func__);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2009  		return sg_ctl_ioreceive(filp, sfp, p);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2010  	case SG_IORECEIVE_V3:
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2011  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE_V3\n", __func__);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2012  		return sg_ctl_ioreceive_v3(filp, sfp, p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2013  	case SG_GET_SCSI_ID:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2014  		return sg_ctl_scsi_id(sdev, sfp, p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2015  	case SG_SET_FORCE_PACK_ID:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2016  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2017  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2018  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2019  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2020  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2021  		return 0;
89c0e50330bd6d Douglas Gilbert   2021-02-19  2022  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2023  		val = -1;
763d5d3c1d381f Douglas Gilbert   2021-02-19  2024  		xa_for_each_marked(&sfp->srp_arr, idx, srp, SG_XA_RQ_AWAIT) {
763d5d3c1d381f Douglas Gilbert   2021-02-19  2025  			if (!srp)
763d5d3c1d381f Douglas Gilbert   2021-02-19  2026  				continue;
af1fc95db44560 Douglas Gilbert   2021-02-19  2027  			val = srp->pack_id;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2028  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2029  		}
c99d01af2aa92f Douglas Gilbert   2021-02-19  2030  		SG_LOG(3, sfp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2031  		return put_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2032  	case SG_GET_NUM_WAITING:
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2033  		val = atomic_read(&sfp->waiting);
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2034  		if (val)
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2035  			return put_user(val, ip);
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2036  		return put_user(atomic_read_acquire(&sfp->waiting), ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2037  	case SG_GET_SG_TABLESIZE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2038  		SG_LOG(3, sfp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2039  		       sdp->max_sgat_sz);
48a7350dda38dc Douglas Gilbert   2021-02-19  2040  		return put_user(sdp->max_sgat_sz, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2041  	case SG_SET_RESERVED_SIZE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2042  		result = get_user(val, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2043  		if (!result) {
c99d01af2aa92f Douglas Gilbert   2021-02-19  2044  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
af1fc95db44560 Douglas Gilbert   2021-02-19  2045  				mutex_lock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2046  				result = sg_set_reserved_sz(sfp, val);
af1fc95db44560 Douglas Gilbert   2021-02-19  2047  				mutex_unlock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2048  			} else {
c99d01af2aa92f Douglas Gilbert   2021-02-19  2049  				SG_LOG(3, sfp, "%s: invalid size\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2050  				result = -EINVAL;
1bc0eb0446158c Hannes Reinecke   2017-04-07  2051  			}
^1da177e4c3f41 Linus Torvalds    2005-04-16  2052  		}
c99d01af2aa92f Douglas Gilbert   2021-02-19  2053  		return result;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2054  	case SG_GET_RESERVED_SIZE:
af1fc95db44560 Douglas Gilbert   2021-02-19  2055  		mutex_lock(&sfp->f_mutex);
af1fc95db44560 Douglas Gilbert   2021-02-19  2056  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
af1fc95db44560 Douglas Gilbert   2021-02-19  2057  			    sdp->max_sgat_sz);
af1fc95db44560 Douglas Gilbert   2021-02-19  2058  		mutex_unlock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2059  		SG_LOG(3, sfp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2060  		       __func__, val);
af1fc95db44560 Douglas Gilbert   2021-02-19  2061  		result = put_user(val, ip);
af1fc95db44560 Douglas Gilbert   2021-02-19  2062  		return result;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2063  	case SG_SET_COMMAND_Q:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2064  		SG_LOG(3, sfp, "%s:    SG_SET_COMMAND_Q\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2065  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2066  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2067  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2068  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2069  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2070  	case SG_GET_COMMAND_Q:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2071  		SG_LOG(3, sfp, "%s:    SG_GET_COMMAND_Q\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2072  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2073  	case SG_SET_KEEP_ORPHAN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2074  		SG_LOG(3, sfp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2075  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2076  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2077  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2078  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2079  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2080  	case SG_GET_KEEP_ORPHAN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2081  		SG_LOG(3, sfp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2082  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
af1fc95db44560 Douglas Gilbert   2021-02-19  2083  				ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2084  	case SG_GET_VERSION_NUM:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2085  		SG_LOG(3, sfp, "%s:    SG_GET_VERSION_NUM\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2086  		return put_user(sg_version_num, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2087  	case SG_GET_REQUEST_TABLE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2088  		return sg_ctl_req_tbl(sfp, p);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2089  	case SG_SCSI_RESET:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2090  		SG_LOG(3, sfp, "%s:    SG_SCSI_RESET\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2091  		break;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2092  	case SG_SET_TIMEOUT:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2093  		SG_LOG(3, sfp, "%s:    SG_SET_TIMEOUT\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2094  		result = get_user(val, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2095  		if (result)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2096  			return result;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2097  		if (val < 0)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2098  			return -EIO;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2099  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
c99d01af2aa92f Douglas Gilbert   2021-02-19  2100  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
c99d01af2aa92f Douglas Gilbert   2021-02-19  2101  				    INT_MAX);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2102  		sfp->timeout_user = val;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2103  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2104  		return 0;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2105  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2106  				/* strange ..., for backward compatibility */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2107  		SG_LOG(3, sfp, "%s:    SG_GET_TIMEOUT\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2108  		return sfp->timeout_user;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2109  	case SG_SET_FORCE_LOW_DMA:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2110  		/*
c99d01af2aa92f Douglas Gilbert   2021-02-19  2111  		 * N.B. This ioctl never worked properly, but failed to
c99d01af2aa92f Douglas Gilbert   2021-02-19  2112  		 * return an error value. So returning '0' to keep
c99d01af2aa92f Douglas Gilbert   2021-02-19  2113  		 * compatibility with legacy applications.
c99d01af2aa92f Douglas Gilbert   2021-02-19  2114  		 */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2115  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2116  		return 0;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2117  	case SG_GET_LOW_DMA:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2118  		SG_LOG(3, sfp, "%s:    SG_GET_LOW_DMA\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2119  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
7ba0ec6097b45c Douglas Gilbert   2021-02-19  2120  	case SG_NEXT_CMD_LEN:	/* active only in v2 interface */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2121  		SG_LOG(3, sfp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2122  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2123  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2124  			return result;
bf33f87dd04c37 peter chang       2017-02-15  2125  		if (val > SG_MAX_CDB_SIZE)
bf33f87dd04c37 peter chang       2017-02-15  2126  			return -ENOMEM;
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2127  		mutex_lock(&sfp->f_mutex);
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2128  		sfp->next_cmd_len = max_t(int, val, 0);
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2129  		mutex_unlock(&sfp->f_mutex);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2130  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2131  	case SG_GET_ACCESS_COUNT:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2132  		SG_LOG(3, sfp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2133  		/* faked - we don't have a real access count anymore */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2134  		val = (sdev ? 1 : 0);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2135  		return put_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2136  	case SG_EMULATED_HOST:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2137  		SG_LOG(3, sfp, "%s:    SG_EMULATED_HOST\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2138  		if (unlikely(SG_IS_DETACHING(sdp)))
af1fc95db44560 Douglas Gilbert   2021-02-19  2139  			return -ENODEV;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2140  		return put_user(sdev->host->hostt->emulated, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2141  	case SCSI_IOCTL_SEND_COMMAND:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2142  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2143  		return sg_scsi_ioctl(sdev->request_queue, NULL, filp->f_mode,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2144  				     p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2145  	case SG_SET_DEBUG:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2146  		SG_LOG(3, sfp, "%s:    SG_SET_DEBUG\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2147  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2148  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2149  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2150  		assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val);
0a3245bc182560 Douglas Gilbert   2021-02-19  2151  		if (val == 0)	/* user can force recalculation */
0a3245bc182560 Douglas Gilbert   2021-02-19  2152  			sg_calc_sgat_param(sdp);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2153  		return 0;
44ec95425c1d9d Alan Stern        2007-02-20  2154  	case BLKSECTGET:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2155  		SG_LOG(3, sfp, "%s:    BLKSECTGET\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2156  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
6da127ad0918f9 Christof Schmitt  2008-01-11  2157  	case BLKTRACESETUP:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2158  		SG_LOG(3, sfp, "%s:    BLKTRACESETUP\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2159  		return blk_trace_setup(sdev->request_queue,
6da127ad0918f9 Christof Schmitt  2008-01-11  2160  				       sdp->disk->disk_name,
76e3a19d0691bb Martin Peschke    2009-01-30  2161  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
7475c8ae1b7bfc Bart Van Assche   2017-08-25  2162  				       NULL, p);
6da127ad0918f9 Christof Schmitt  2008-01-11  2163  	case BLKTRACESTART:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2164  		SG_LOG(3, sfp, "%s:    BLKTRACESTART\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2165  		return blk_trace_startstop(sdev->request_queue, 1);
6da127ad0918f9 Christof Schmitt  2008-01-11  2166  	case BLKTRACESTOP:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2167  		SG_LOG(3, sfp, "%s:    BLKTRACESTOP\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2168  		return blk_trace_startstop(sdev->request_queue, 0);
6da127ad0918f9 Christof Schmitt  2008-01-11  2169  	case BLKTRACETEARDOWN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2170  		SG_LOG(3, sfp, "%s:    BLKTRACETEARDOWN\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2171  		return blk_trace_remove(sdev->request_queue);
906d15fbd23c12 Christoph Hellwig 2014-10-11  2172  	case SCSI_IOCTL_GET_IDLUN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2173  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2174  		       pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2175  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2176  	case SCSI_IOCTL_GET_BUS_NUMBER:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2177  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2178  		       __func__, pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2179  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2180  	case SCSI_IOCTL_PROBE_HOST:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2181  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_PROBE_HOST%s",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2182  		       __func__, pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2183  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2184  	case SG_GET_TRANSFORM:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2185  		SG_LOG(3, sfp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
906d15fbd23c12 Christoph Hellwig 2014-10-11  2186  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2187  	default:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2188  		SG_LOG(3, sfp, "%s:    unrecognized ioctl [0x%x]%s\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2189  		       __func__, cmd_in, pmlp);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2190  		if (read_only)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2191  			return -EPERM;	/* don't know, so take safer approach */
906d15fbd23c12 Christoph Hellwig 2014-10-11  2192  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2193  	}
f24c409c880d71 Douglas Gilbert   2021-02-19  2194  	result = sg_allow_if_err_recovery(sdp, filp->f_flags & O_NDELAY);
af1fc95db44560 Douglas Gilbert   2021-02-19  2195  	if (unlikely(result))
906d15fbd23c12 Christoph Hellwig 2014-10-11  2196  		return result;
d320a9551e394c Arnd Bergmann     2019-03-15  2197  	return -ENOIOCTLCMD;
^1da177e4c3f41 Linus Torvalds    2005-04-16 @2198  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  2199  

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

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33901 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes
@ 2021-03-12 12:38 ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-03-12 12:38 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 20599 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d98f554b318f57ded14684c04b3337a1975cf490
commit: ed130bcd75fe26da9165d0a9f9df931aa8c47fc9 [2408/4141] scsi: sg: Track lowest inactive and await indexes
config: arm-randconfig-r036-20210312 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

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


vim +2198 drivers/scsi/sg.c

c99d01af2aa92f Douglas Gilbert   2021-02-19  1978  
37b9d1e0017b2d Jörn Engel        2012-04-12  1979  static long
da0b8f731b3ccc Douglas Gilbert   2021-02-19  1980  sg_ioctl_common(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp,
d320a9551e394c Arnd Bergmann     2019-03-15  1981  		unsigned int cmd_in, void __user *p)
^1da177e4c3f41 Linus Torvalds    2005-04-16  1982  {
c99d01af2aa92f Douglas Gilbert   2021-02-19  1983  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
c99d01af2aa92f Douglas Gilbert   2021-02-19  1984  	int val;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1985  	int result = 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  1986  	int __user *ip = p;
da0b8f731b3ccc Douglas Gilbert   2021-02-19  1987  	struct sg_request *srp;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1988  	struct scsi_device *sdev;
763d5d3c1d381f Douglas Gilbert   2021-02-19  1989  	unsigned long idx;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1990  	__maybe_unused const char *pmlp = ", pass to mid-level";
^1da177e4c3f41 Linus Torvalds    2005-04-16  1991  
b0d532124dd2c2 Douglas Gilbert   2021-02-19  1992  	SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
b0d532124dd2c2 Douglas Gilbert   2021-02-19  1993  	       !!(filp->f_flags & O_NONBLOCK));
c99d01af2aa92f Douglas Gilbert   2021-02-19  1994  	if (unlikely(SG_IS_DETACHING(sdp)))
c99d01af2aa92f Douglas Gilbert   2021-02-19  1995  		return -ENODEV;
c99d01af2aa92f Douglas Gilbert   2021-02-19  1996  	sdev = sdp->device;
^1da177e4c3f41 Linus Torvalds    2005-04-16  1997  
^1da177e4c3f41 Linus Torvalds    2005-04-16  1998  	switch (cmd_in) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  1999  	case SG_IO:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2000  		return sg_ctl_sg_io(filp, sdp, sfp, p);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2001  	case SG_IOSUBMIT:
bb2e50421582c8 Douglas Gilbert   2021-02-19  2002  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT\n", __func__);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2003  		return sg_ctl_iosubmit(filp, sfp, p);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2004  	case SG_IOSUBMIT_V3:
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2005  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT_V3\n", __func__);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2006  		return sg_ctl_iosubmit_v3(filp, sfp, p);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2007  	case SG_IORECEIVE:
bb2e50421582c8 Douglas Gilbert   2021-02-19  2008  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE\n", __func__);
bb2e50421582c8 Douglas Gilbert   2021-02-19  2009  		return sg_ctl_ioreceive(filp, sfp, p);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2010  	case SG_IORECEIVE_V3:
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2011  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE_V3\n", __func__);
ba044fa1d5f428 Douglas Gilbert   2021-02-19  2012  		return sg_ctl_ioreceive_v3(filp, sfp, p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2013  	case SG_GET_SCSI_ID:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2014  		return sg_ctl_scsi_id(sdev, sfp, p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2015  	case SG_SET_FORCE_PACK_ID:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2016  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2017  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2018  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2019  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2020  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2021  		return 0;
89c0e50330bd6d Douglas Gilbert   2021-02-19  2022  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2023  		val = -1;
763d5d3c1d381f Douglas Gilbert   2021-02-19  2024  		xa_for_each_marked(&sfp->srp_arr, idx, srp, SG_XA_RQ_AWAIT) {
763d5d3c1d381f Douglas Gilbert   2021-02-19  2025  			if (!srp)
763d5d3c1d381f Douglas Gilbert   2021-02-19  2026  				continue;
af1fc95db44560 Douglas Gilbert   2021-02-19  2027  			val = srp->pack_id;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2028  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2029  		}
c99d01af2aa92f Douglas Gilbert   2021-02-19  2030  		SG_LOG(3, sfp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2031  		return put_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2032  	case SG_GET_NUM_WAITING:
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2033  		val = atomic_read(&sfp->waiting);
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2034  		if (val)
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2035  			return put_user(val, ip);
ed130bcd75fe26 Douglas Gilbert   2021-02-19  2036  		return put_user(atomic_read_acquire(&sfp->waiting), ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2037  	case SG_GET_SG_TABLESIZE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2038  		SG_LOG(3, sfp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2039  		       sdp->max_sgat_sz);
48a7350dda38dc Douglas Gilbert   2021-02-19  2040  		return put_user(sdp->max_sgat_sz, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2041  	case SG_SET_RESERVED_SIZE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2042  		result = get_user(val, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2043  		if (!result) {
c99d01af2aa92f Douglas Gilbert   2021-02-19  2044  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
af1fc95db44560 Douglas Gilbert   2021-02-19  2045  				mutex_lock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2046  				result = sg_set_reserved_sz(sfp, val);
af1fc95db44560 Douglas Gilbert   2021-02-19  2047  				mutex_unlock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2048  			} else {
c99d01af2aa92f Douglas Gilbert   2021-02-19  2049  				SG_LOG(3, sfp, "%s: invalid size\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2050  				result = -EINVAL;
1bc0eb0446158c Hannes Reinecke   2017-04-07  2051  			}
^1da177e4c3f41 Linus Torvalds    2005-04-16  2052  		}
c99d01af2aa92f Douglas Gilbert   2021-02-19  2053  		return result;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2054  	case SG_GET_RESERVED_SIZE:
af1fc95db44560 Douglas Gilbert   2021-02-19  2055  		mutex_lock(&sfp->f_mutex);
af1fc95db44560 Douglas Gilbert   2021-02-19  2056  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
af1fc95db44560 Douglas Gilbert   2021-02-19  2057  			    sdp->max_sgat_sz);
af1fc95db44560 Douglas Gilbert   2021-02-19  2058  		mutex_unlock(&sfp->f_mutex);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2059  		SG_LOG(3, sfp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2060  		       __func__, val);
af1fc95db44560 Douglas Gilbert   2021-02-19  2061  		result = put_user(val, ip);
af1fc95db44560 Douglas Gilbert   2021-02-19  2062  		return result;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2063  	case SG_SET_COMMAND_Q:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2064  		SG_LOG(3, sfp, "%s:    SG_SET_COMMAND_Q\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2065  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2066  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2067  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2068  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2069  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2070  	case SG_GET_COMMAND_Q:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2071  		SG_LOG(3, sfp, "%s:    SG_GET_COMMAND_Q\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2072  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2073  	case SG_SET_KEEP_ORPHAN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2074  		SG_LOG(3, sfp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2075  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2076  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2077  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2078  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2079  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2080  	case SG_GET_KEEP_ORPHAN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2081  		SG_LOG(3, sfp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2082  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
af1fc95db44560 Douglas Gilbert   2021-02-19  2083  				ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2084  	case SG_GET_VERSION_NUM:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2085  		SG_LOG(3, sfp, "%s:    SG_GET_VERSION_NUM\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2086  		return put_user(sg_version_num, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2087  	case SG_GET_REQUEST_TABLE:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2088  		return sg_ctl_req_tbl(sfp, p);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2089  	case SG_SCSI_RESET:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2090  		SG_LOG(3, sfp, "%s:    SG_SCSI_RESET\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2091  		break;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2092  	case SG_SET_TIMEOUT:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2093  		SG_LOG(3, sfp, "%s:    SG_SET_TIMEOUT\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2094  		result = get_user(val, ip);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2095  		if (result)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2096  			return result;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2097  		if (val < 0)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2098  			return -EIO;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2099  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
c99d01af2aa92f Douglas Gilbert   2021-02-19  2100  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
c99d01af2aa92f Douglas Gilbert   2021-02-19  2101  				    INT_MAX);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2102  		sfp->timeout_user = val;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2103  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2104  		return 0;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2105  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2106  				/* strange ..., for backward compatibility */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2107  		SG_LOG(3, sfp, "%s:    SG_GET_TIMEOUT\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2108  		return sfp->timeout_user;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2109  	case SG_SET_FORCE_LOW_DMA:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2110  		/*
c99d01af2aa92f Douglas Gilbert   2021-02-19  2111  		 * N.B. This ioctl never worked properly, but failed to
c99d01af2aa92f Douglas Gilbert   2021-02-19  2112  		 * return an error value. So returning '0' to keep
c99d01af2aa92f Douglas Gilbert   2021-02-19  2113  		 * compatibility with legacy applications.
c99d01af2aa92f Douglas Gilbert   2021-02-19  2114  		 */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2115  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2116  		return 0;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2117  	case SG_GET_LOW_DMA:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2118  		SG_LOG(3, sfp, "%s:    SG_GET_LOW_DMA\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2119  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
7ba0ec6097b45c Douglas Gilbert   2021-02-19  2120  	case SG_NEXT_CMD_LEN:	/* active only in v2 interface */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2121  		SG_LOG(3, sfp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2122  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2123  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2124  			return result;
bf33f87dd04c37 peter chang       2017-02-15  2125  		if (val > SG_MAX_CDB_SIZE)
bf33f87dd04c37 peter chang       2017-02-15  2126  			return -ENOMEM;
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2127  		mutex_lock(&sfp->f_mutex);
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2128  		sfp->next_cmd_len = max_t(int, val, 0);
c4aaf4c540d32a Douglas Gilbert   2021-02-19  2129  		mutex_unlock(&sfp->f_mutex);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2130  		return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2131  	case SG_GET_ACCESS_COUNT:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2132  		SG_LOG(3, sfp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2133  		/* faked - we don't have a real access count anymore */
c99d01af2aa92f Douglas Gilbert   2021-02-19  2134  		val = (sdev ? 1 : 0);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2135  		return put_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2136  	case SG_EMULATED_HOST:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2137  		SG_LOG(3, sfp, "%s:    SG_EMULATED_HOST\n", __func__);
af1fc95db44560 Douglas Gilbert   2021-02-19  2138  		if (unlikely(SG_IS_DETACHING(sdp)))
af1fc95db44560 Douglas Gilbert   2021-02-19  2139  			return -ENODEV;
c99d01af2aa92f Douglas Gilbert   2021-02-19  2140  		return put_user(sdev->host->hostt->emulated, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2141  	case SCSI_IOCTL_SEND_COMMAND:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2142  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2143  		return sg_scsi_ioctl(sdev->request_queue, NULL, filp->f_mode,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2144  				     p);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2145  	case SG_SET_DEBUG:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2146  		SG_LOG(3, sfp, "%s:    SG_SET_DEBUG\n", __func__);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2147  		result = get_user(val, ip);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2148  		if (result)
^1da177e4c3f41 Linus Torvalds    2005-04-16  2149  			return result;
af1fc95db44560 Douglas Gilbert   2021-02-19  2150  		assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val);
0a3245bc182560 Douglas Gilbert   2021-02-19  2151  		if (val == 0)	/* user can force recalculation */
0a3245bc182560 Douglas Gilbert   2021-02-19  2152  			sg_calc_sgat_param(sdp);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2153  		return 0;
44ec95425c1d9d Alan Stern        2007-02-20  2154  	case BLKSECTGET:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2155  		SG_LOG(3, sfp, "%s:    BLKSECTGET\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2156  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
6da127ad0918f9 Christof Schmitt  2008-01-11  2157  	case BLKTRACESETUP:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2158  		SG_LOG(3, sfp, "%s:    BLKTRACESETUP\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2159  		return blk_trace_setup(sdev->request_queue,
6da127ad0918f9 Christof Schmitt  2008-01-11  2160  				       sdp->disk->disk_name,
76e3a19d0691bb Martin Peschke    2009-01-30  2161  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
7475c8ae1b7bfc Bart Van Assche   2017-08-25  2162  				       NULL, p);
6da127ad0918f9 Christof Schmitt  2008-01-11  2163  	case BLKTRACESTART:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2164  		SG_LOG(3, sfp, "%s:    BLKTRACESTART\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2165  		return blk_trace_startstop(sdev->request_queue, 1);
6da127ad0918f9 Christof Schmitt  2008-01-11  2166  	case BLKTRACESTOP:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2167  		SG_LOG(3, sfp, "%s:    BLKTRACESTOP\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2168  		return blk_trace_startstop(sdev->request_queue, 0);
6da127ad0918f9 Christof Schmitt  2008-01-11  2169  	case BLKTRACETEARDOWN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2170  		SG_LOG(3, sfp, "%s:    BLKTRACETEARDOWN\n", __func__);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2171  		return blk_trace_remove(sdev->request_queue);
906d15fbd23c12 Christoph Hellwig 2014-10-11  2172  	case SCSI_IOCTL_GET_IDLUN:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2173  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
c99d01af2aa92f Douglas Gilbert   2021-02-19  2174  		       pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2175  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2176  	case SCSI_IOCTL_GET_BUS_NUMBER:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2177  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2178  		       __func__, pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2179  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2180  	case SCSI_IOCTL_PROBE_HOST:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2181  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_PROBE_HOST%s",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2182  		       __func__, pmlp);
c99d01af2aa92f Douglas Gilbert   2021-02-19  2183  		break;
906d15fbd23c12 Christoph Hellwig 2014-10-11  2184  	case SG_GET_TRANSFORM:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2185  		SG_LOG(3, sfp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
906d15fbd23c12 Christoph Hellwig 2014-10-11  2186  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2187  	default:
c99d01af2aa92f Douglas Gilbert   2021-02-19  2188  		SG_LOG(3, sfp, "%s:    unrecognized ioctl [0x%x]%s\n",
c99d01af2aa92f Douglas Gilbert   2021-02-19  2189  		       __func__, cmd_in, pmlp);
^1da177e4c3f41 Linus Torvalds    2005-04-16  2190  		if (read_only)
c99d01af2aa92f Douglas Gilbert   2021-02-19  2191  			return -EPERM;	/* don't know, so take safer approach */
906d15fbd23c12 Christoph Hellwig 2014-10-11  2192  		break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  2193  	}
f24c409c880d71 Douglas Gilbert   2021-02-19  2194  	result = sg_allow_if_err_recovery(sdp, filp->f_flags & O_NDELAY);
af1fc95db44560 Douglas Gilbert   2021-02-19  2195  	if (unlikely(result))
906d15fbd23c12 Christoph Hellwig 2014-10-11  2196  		return result;
d320a9551e394c Arnd Bergmann     2019-03-15  2197  	return -ENOIOCTLCMD;
^1da177e4c3f41 Linus Torvalds    2005-04-16 @2198  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  2199  

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

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33901 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes
  2021-03-12 12:38 ` kernel test robot
@ 2021-03-13  1:15   ` Douglas Gilbert
  -1 siblings, 0 replies; 4+ messages in thread
From: Douglas Gilbert @ 2021-03-13  1:15 UTC (permalink / raw)
  To: kernel test robot
  Cc: kbuild-all, Linux Memory Management List, Martin K. Petersen,
	Hannes Reinecke

On 2021-03-12 7:38 a.m., kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   d98f554b318f57ded14684c04b3337a1975cf490
> commit: ed130bcd75fe26da9165d0a9f9df931aa8c47fc9 [2408/4141] scsi: sg: Track lowest inactive and await indexes
> config: arm-randconfig-r036-20210312 (attached as .config)
> compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
> 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
>          # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
>          git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>          git fetch --no-tags linux-next master
>          git checkout ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
>          # save the attached .config to linux build tree
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All warnings (new ones prefixed by >>):
> 
>     drivers/scsi/sg.c: In function 'sg_ioctl_common':
>>> drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>      2198 | }
>           | ^
>

Hello,
This just looks like nonsense. First the name: "frame-larger-than", WTH is
that in the context of C? If it is talking about stack usage, then it should
say so. Assuming it is stack usage, sg_ioctl_common() has minimal auto
variable usage on the stack: a bool, 2 int_s, an unsigned long and 4
pointers. Add 4 pointers and an int for passed parameters, plus a return
value and return address. sg_ioctl_common() is called by sg_ioctl() which
has an int, and 3 pointers as its auto_s. sg_ioctl() is the char driver
entry point for ioctl(2)s on sg devices. That amounts to around 200 bytes
of stack usage from where the driver is entered, on a 64 bit machine.

Perhaps someone can explain why this warning is being generated and what,
if anything, can been done to remedy it. Would 'static' in front of the
pmlp declaration make any difference? Can a switch with lots of case_s
bloat the stack?

Doug Gilbert

> vim +2198 drivers/scsi/sg.c
> 
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1978
> 37b9d1e0017b2d Jörn Engel        2012-04-12  1979  static long
> da0b8f731b3ccc Douglas Gilbert   2021-02-19  1980  sg_ioctl_common(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp,
> d320a9551e394c Arnd Bergmann     2019-03-15  1981  		unsigned int cmd_in, void __user *p)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1982  {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1983  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1984  	int val;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1985  	int result = 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1986  	int __user *ip = p;
> da0b8f731b3ccc Douglas Gilbert   2021-02-19  1987  	struct sg_request *srp;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1988  	struct scsi_device *sdev;
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  1989  	unsigned long idx;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1990  	__maybe_unused const char *pmlp = ", pass to mid-level";
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1991
> b0d532124dd2c2 Douglas Gilbert   2021-02-19  1992  	SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
> b0d532124dd2c2 Douglas Gilbert   2021-02-19  1993  	       !!(filp->f_flags & O_NONBLOCK));
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1994  	if (unlikely(SG_IS_DETACHING(sdp)))
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1995  		return -ENODEV;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1996  	sdev = sdp->device;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1997
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1998  	switch (cmd_in) {
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1999  	case SG_IO:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2000  		return sg_ctl_sg_io(filp, sdp, sfp, p);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2001  	case SG_IOSUBMIT:
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2002  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT\n", __func__);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2003  		return sg_ctl_iosubmit(filp, sfp, p);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2004  	case SG_IOSUBMIT_V3:
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2005  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT_V3\n", __func__);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2006  		return sg_ctl_iosubmit_v3(filp, sfp, p);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2007  	case SG_IORECEIVE:
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2008  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE\n", __func__);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2009  		return sg_ctl_ioreceive(filp, sfp, p);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2010  	case SG_IORECEIVE_V3:
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2011  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE_V3\n", __func__);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2012  		return sg_ctl_ioreceive_v3(filp, sfp, p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2013  	case SG_GET_SCSI_ID:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2014  		return sg_ctl_scsi_id(sdev, sfp, p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2015  	case SG_SET_FORCE_PACK_ID:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2016  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2017  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2018  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2019  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2020  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2021  		return 0;
> 89c0e50330bd6d Douglas Gilbert   2021-02-19  2022  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2023  		val = -1;
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2024  		xa_for_each_marked(&sfp->srp_arr, idx, srp, SG_XA_RQ_AWAIT) {
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2025  			if (!srp)
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2026  				continue;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2027  			val = srp->pack_id;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2028  			break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2029  		}
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2030  		SG_LOG(3, sfp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2031  		return put_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2032  	case SG_GET_NUM_WAITING:
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2033  		val = atomic_read(&sfp->waiting);
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2034  		if (val)
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2035  			return put_user(val, ip);
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2036  		return put_user(atomic_read_acquire(&sfp->waiting), ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2037  	case SG_GET_SG_TABLESIZE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2038  		SG_LOG(3, sfp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2039  		       sdp->max_sgat_sz);
> 48a7350dda38dc Douglas Gilbert   2021-02-19  2040  		return put_user(sdp->max_sgat_sz, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2041  	case SG_SET_RESERVED_SIZE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2042  		result = get_user(val, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2043  		if (!result) {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2044  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
> af1fc95db44560 Douglas Gilbert   2021-02-19  2045  				mutex_lock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2046  				result = sg_set_reserved_sz(sfp, val);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2047  				mutex_unlock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2048  			} else {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2049  				SG_LOG(3, sfp, "%s: invalid size\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2050  				result = -EINVAL;
> 1bc0eb0446158c Hannes Reinecke   2017-04-07  2051  			}
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2052  		}
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2053  		return result;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2054  	case SG_GET_RESERVED_SIZE:
> af1fc95db44560 Douglas Gilbert   2021-02-19  2055  		mutex_lock(&sfp->f_mutex);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2056  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
> af1fc95db44560 Douglas Gilbert   2021-02-19  2057  			    sdp->max_sgat_sz);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2058  		mutex_unlock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2059  		SG_LOG(3, sfp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2060  		       __func__, val);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2061  		result = put_user(val, ip);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2062  		return result;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2063  	case SG_SET_COMMAND_Q:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2064  		SG_LOG(3, sfp, "%s:    SG_SET_COMMAND_Q\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2065  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2066  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2067  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2068  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2069  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2070  	case SG_GET_COMMAND_Q:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2071  		SG_LOG(3, sfp, "%s:    SG_GET_COMMAND_Q\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2072  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2073  	case SG_SET_KEEP_ORPHAN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2074  		SG_LOG(3, sfp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2075  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2076  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2077  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2078  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2079  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2080  	case SG_GET_KEEP_ORPHAN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2081  		SG_LOG(3, sfp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2082  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
> af1fc95db44560 Douglas Gilbert   2021-02-19  2083  				ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2084  	case SG_GET_VERSION_NUM:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2085  		SG_LOG(3, sfp, "%s:    SG_GET_VERSION_NUM\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2086  		return put_user(sg_version_num, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2087  	case SG_GET_REQUEST_TABLE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2088  		return sg_ctl_req_tbl(sfp, p);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2089  	case SG_SCSI_RESET:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2090  		SG_LOG(3, sfp, "%s:    SG_SCSI_RESET\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2091  		break;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2092  	case SG_SET_TIMEOUT:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2093  		SG_LOG(3, sfp, "%s:    SG_SET_TIMEOUT\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2094  		result = get_user(val, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2095  		if (result)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2096  			return result;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2097  		if (val < 0)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2098  			return -EIO;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2099  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2100  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2101  				    INT_MAX);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2102  		sfp->timeout_user = val;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2103  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2104  		return 0;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2105  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2106  				/* strange ..., for backward compatibility */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2107  		SG_LOG(3, sfp, "%s:    SG_GET_TIMEOUT\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2108  		return sfp->timeout_user;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2109  	case SG_SET_FORCE_LOW_DMA:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2110  		/*
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2111  		 * N.B. This ioctl never worked properly, but failed to
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2112  		 * return an error value. So returning '0' to keep
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2113  		 * compatibility with legacy applications.
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2114  		 */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2115  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2116  		return 0;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2117  	case SG_GET_LOW_DMA:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2118  		SG_LOG(3, sfp, "%s:    SG_GET_LOW_DMA\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2119  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
> 7ba0ec6097b45c Douglas Gilbert   2021-02-19  2120  	case SG_NEXT_CMD_LEN:	/* active only in v2 interface */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2121  		SG_LOG(3, sfp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2122  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2123  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2124  			return result;
> bf33f87dd04c37 peter chang       2017-02-15  2125  		if (val > SG_MAX_CDB_SIZE)
> bf33f87dd04c37 peter chang       2017-02-15  2126  			return -ENOMEM;
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2127  		mutex_lock(&sfp->f_mutex);
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2128  		sfp->next_cmd_len = max_t(int, val, 0);
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2129  		mutex_unlock(&sfp->f_mutex);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2130  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2131  	case SG_GET_ACCESS_COUNT:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2132  		SG_LOG(3, sfp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2133  		/* faked - we don't have a real access count anymore */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2134  		val = (sdev ? 1 : 0);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2135  		return put_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2136  	case SG_EMULATED_HOST:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2137  		SG_LOG(3, sfp, "%s:    SG_EMULATED_HOST\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2138  		if (unlikely(SG_IS_DETACHING(sdp)))
> af1fc95db44560 Douglas Gilbert   2021-02-19  2139  			return -ENODEV;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2140  		return put_user(sdev->host->hostt->emulated, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2141  	case SCSI_IOCTL_SEND_COMMAND:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2142  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2143  		return sg_scsi_ioctl(sdev->request_queue, NULL, filp->f_mode,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2144  				     p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2145  	case SG_SET_DEBUG:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2146  		SG_LOG(3, sfp, "%s:    SG_SET_DEBUG\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2147  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2148  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2149  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2150  		assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val);
> 0a3245bc182560 Douglas Gilbert   2021-02-19  2151  		if (val == 0)	/* user can force recalculation */
> 0a3245bc182560 Douglas Gilbert   2021-02-19  2152  			sg_calc_sgat_param(sdp);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2153  		return 0;
> 44ec95425c1d9d Alan Stern        2007-02-20  2154  	case BLKSECTGET:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2155  		SG_LOG(3, sfp, "%s:    BLKSECTGET\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2156  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2157  	case BLKTRACESETUP:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2158  		SG_LOG(3, sfp, "%s:    BLKTRACESETUP\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2159  		return blk_trace_setup(sdev->request_queue,
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2160  				       sdp->disk->disk_name,
> 76e3a19d0691bb Martin Peschke    2009-01-30  2161  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
> 7475c8ae1b7bfc Bart Van Assche   2017-08-25  2162  				       NULL, p);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2163  	case BLKTRACESTART:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2164  		SG_LOG(3, sfp, "%s:    BLKTRACESTART\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2165  		return blk_trace_startstop(sdev->request_queue, 1);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2166  	case BLKTRACESTOP:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2167  		SG_LOG(3, sfp, "%s:    BLKTRACESTOP\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2168  		return blk_trace_startstop(sdev->request_queue, 0);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2169  	case BLKTRACETEARDOWN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2170  		SG_LOG(3, sfp, "%s:    BLKTRACETEARDOWN\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2171  		return blk_trace_remove(sdev->request_queue);
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2172  	case SCSI_IOCTL_GET_IDLUN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2173  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2174  		       pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2175  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2176  	case SCSI_IOCTL_GET_BUS_NUMBER:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2177  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2178  		       __func__, pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2179  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2180  	case SCSI_IOCTL_PROBE_HOST:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2181  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_PROBE_HOST%s",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2182  		       __func__, pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2183  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2184  	case SG_GET_TRANSFORM:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2185  		SG_LOG(3, sfp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2186  		break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2187  	default:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2188  		SG_LOG(3, sfp, "%s:    unrecognized ioctl [0x%x]%s\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2189  		       __func__, cmd_in, pmlp);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2190  		if (read_only)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2191  			return -EPERM;	/* don't know, so take safer approach */
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2192  		break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2193  	}
> f24c409c880d71 Douglas Gilbert   2021-02-19  2194  	result = sg_allow_if_err_recovery(sdp, filp->f_flags & O_NDELAY);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2195  	if (unlikely(result))
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2196  		return result;
> d320a9551e394c Arnd Bergmann     2019-03-15  2197  	return -ENOIOCTLCMD;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16 @2198  }
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2199
> 
> :::::: The code at line 2198 was first introduced by commit
> :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
> 
> :::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
> :::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> 



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes
@ 2021-03-13  1:15   ` Douglas Gilbert
  0 siblings, 0 replies; 4+ messages in thread
From: Douglas Gilbert @ 2021-03-13  1:15 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 22102 bytes --]

On 2021-03-12 7:38 a.m., kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   d98f554b318f57ded14684c04b3337a1975cf490
> commit: ed130bcd75fe26da9165d0a9f9df931aa8c47fc9 [2408/4141] scsi: sg: Track lowest inactive and await indexes
> config: arm-randconfig-r036-20210312 (attached as .config)
> compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
> 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
>          # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
>          git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>          git fetch --no-tags linux-next master
>          git checkout ed130bcd75fe26da9165d0a9f9df931aa8c47fc9
>          # save the attached .config to linux build tree
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All warnings (new ones prefixed by >>):
> 
>     drivers/scsi/sg.c: In function 'sg_ioctl_common':
>>> drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>      2198 | }
>           | ^
>

Hello,
This just looks like nonsense. First the name: "frame-larger-than", WTH is
that in the context of C? If it is talking about stack usage, then it should
say so. Assuming it is stack usage, sg_ioctl_common() has minimal auto
variable usage on the stack: a bool, 2 int_s, an unsigned long and 4
pointers. Add 4 pointers and an int for passed parameters, plus a return
value and return address. sg_ioctl_common() is called by sg_ioctl() which
has an int, and 3 pointers as its auto_s. sg_ioctl() is the char driver
entry point for ioctl(2)s on sg devices. That amounts to around 200 bytes
of stack usage from where the driver is entered, on a 64 bit machine.

Perhaps someone can explain why this warning is being generated and what,
if anything, can been done to remedy it. Would 'static' in front of the
pmlp declaration make any difference? Can a switch with lots of case_s
bloat the stack?

Doug Gilbert

> vim +2198 drivers/scsi/sg.c
> 
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1978
> 37b9d1e0017b2d Jörn Engel        2012-04-12  1979  static long
> da0b8f731b3ccc Douglas Gilbert   2021-02-19  1980  sg_ioctl_common(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp,
> d320a9551e394c Arnd Bergmann     2019-03-15  1981  		unsigned int cmd_in, void __user *p)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1982  {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1983  	bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1984  	int val;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1985  	int result = 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1986  	int __user *ip = p;
> da0b8f731b3ccc Douglas Gilbert   2021-02-19  1987  	struct sg_request *srp;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1988  	struct scsi_device *sdev;
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  1989  	unsigned long idx;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1990  	__maybe_unused const char *pmlp = ", pass to mid-level";
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1991
> b0d532124dd2c2 Douglas Gilbert   2021-02-19  1992  	SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in,
> b0d532124dd2c2 Douglas Gilbert   2021-02-19  1993  	       !!(filp->f_flags & O_NONBLOCK));
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1994  	if (unlikely(SG_IS_DETACHING(sdp)))
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1995  		return -ENODEV;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  1996  	sdev = sdp->device;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1997
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1998  	switch (cmd_in) {
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  1999  	case SG_IO:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2000  		return sg_ctl_sg_io(filp, sdp, sfp, p);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2001  	case SG_IOSUBMIT:
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2002  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT\n", __func__);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2003  		return sg_ctl_iosubmit(filp, sfp, p);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2004  	case SG_IOSUBMIT_V3:
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2005  		SG_LOG(3, sfp, "%s:    SG_IOSUBMIT_V3\n", __func__);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2006  		return sg_ctl_iosubmit_v3(filp, sfp, p);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2007  	case SG_IORECEIVE:
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2008  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE\n", __func__);
> bb2e50421582c8 Douglas Gilbert   2021-02-19  2009  		return sg_ctl_ioreceive(filp, sfp, p);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2010  	case SG_IORECEIVE_V3:
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2011  		SG_LOG(3, sfp, "%s:    SG_IORECEIVE_V3\n", __func__);
> ba044fa1d5f428 Douglas Gilbert   2021-02-19  2012  		return sg_ctl_ioreceive_v3(filp, sfp, p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2013  	case SG_GET_SCSI_ID:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2014  		return sg_ctl_scsi_id(sdev, sfp, p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2015  	case SG_SET_FORCE_PACK_ID:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2016  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_PACK_ID\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2017  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2018  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2019  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2020  		assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2021  		return 0;
> 89c0e50330bd6d Douglas Gilbert   2021-02-19  2022  	case SG_GET_PACK_ID:    /* or tag of oldest "read"-able, -1 if none */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2023  		val = -1;
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2024  		xa_for_each_marked(&sfp->srp_arr, idx, srp, SG_XA_RQ_AWAIT) {
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2025  			if (!srp)
> 763d5d3c1d381f Douglas Gilbert   2021-02-19  2026  				continue;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2027  			val = srp->pack_id;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2028  			break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2029  		}
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2030  		SG_LOG(3, sfp, "%s:    SG_GET_PACK_ID=%d\n", __func__, val);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2031  		return put_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2032  	case SG_GET_NUM_WAITING:
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2033  		val = atomic_read(&sfp->waiting);
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2034  		if (val)
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2035  			return put_user(val, ip);
> ed130bcd75fe26 Douglas Gilbert   2021-02-19  2036  		return put_user(atomic_read_acquire(&sfp->waiting), ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2037  	case SG_GET_SG_TABLESIZE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2038  		SG_LOG(3, sfp, "%s:    SG_GET_SG_TABLESIZE=%d\n", __func__,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2039  		       sdp->max_sgat_sz);
> 48a7350dda38dc Douglas Gilbert   2021-02-19  2040  		return put_user(sdp->max_sgat_sz, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2041  	case SG_SET_RESERVED_SIZE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2042  		result = get_user(val, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2043  		if (!result) {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2044  			if (val >= 0 && val <= (1024 * 1024 * 1024)) {
> af1fc95db44560 Douglas Gilbert   2021-02-19  2045  				mutex_lock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2046  				result = sg_set_reserved_sz(sfp, val);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2047  				mutex_unlock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2048  			} else {
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2049  				SG_LOG(3, sfp, "%s: invalid size\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2050  				result = -EINVAL;
> 1bc0eb0446158c Hannes Reinecke   2017-04-07  2051  			}
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2052  		}
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2053  		return result;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2054  	case SG_GET_RESERVED_SIZE:
> af1fc95db44560 Douglas Gilbert   2021-02-19  2055  		mutex_lock(&sfp->f_mutex);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2056  		val = min_t(int, sfp->rsv_srp->sgat_h.buflen,
> af1fc95db44560 Douglas Gilbert   2021-02-19  2057  			    sdp->max_sgat_sz);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2058  		mutex_unlock(&sfp->f_mutex);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2059  		SG_LOG(3, sfp, "%s:    SG_GET_RESERVED_SIZE=%d\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2060  		       __func__, val);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2061  		result = put_user(val, ip);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2062  		return result;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2063  	case SG_SET_COMMAND_Q:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2064  		SG_LOG(3, sfp, "%s:    SG_SET_COMMAND_Q\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2065  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2066  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2067  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2068  		assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2069  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2070  	case SG_GET_COMMAND_Q:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2071  		SG_LOG(3, sfp, "%s:    SG_GET_COMMAND_Q\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2072  		return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2073  	case SG_SET_KEEP_ORPHAN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2074  		SG_LOG(3, sfp, "%s:    SG_SET_KEEP_ORPHAN\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2075  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2076  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2077  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2078  		assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2079  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2080  	case SG_GET_KEEP_ORPHAN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2081  		SG_LOG(3, sfp, "%s:    SG_GET_KEEP_ORPHAN\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2082  		return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm),
> af1fc95db44560 Douglas Gilbert   2021-02-19  2083  				ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2084  	case SG_GET_VERSION_NUM:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2085  		SG_LOG(3, sfp, "%s:    SG_GET_VERSION_NUM\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2086  		return put_user(sg_version_num, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2087  	case SG_GET_REQUEST_TABLE:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2088  		return sg_ctl_req_tbl(sfp, p);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2089  	case SG_SCSI_RESET:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2090  		SG_LOG(3, sfp, "%s:    SG_SCSI_RESET\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2091  		break;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2092  	case SG_SET_TIMEOUT:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2093  		SG_LOG(3, sfp, "%s:    SG_SET_TIMEOUT\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2094  		result = get_user(val, ip);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2095  		if (result)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2096  			return result;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2097  		if (val < 0)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2098  			return -EIO;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2099  		if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ))
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2100  			val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ),
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2101  				    INT_MAX);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2102  		sfp->timeout_user = val;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2103  		sfp->timeout = mult_frac(val, HZ, USER_HZ);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2104  		return 0;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2105  	case SG_GET_TIMEOUT:    /* N.B. User receives timeout as return value */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2106  				/* strange ..., for backward compatibility */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2107  		SG_LOG(3, sfp, "%s:    SG_GET_TIMEOUT\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2108  		return sfp->timeout_user;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2109  	case SG_SET_FORCE_LOW_DMA:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2110  		/*
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2111  		 * N.B. This ioctl never worked properly, but failed to
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2112  		 * return an error value. So returning '0' to keep
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2113  		 * compatibility with legacy applications.
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2114  		 */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2115  		SG_LOG(3, sfp, "%s:    SG_SET_FORCE_LOW_DMA\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2116  		return 0;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2117  	case SG_GET_LOW_DMA:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2118  		SG_LOG(3, sfp, "%s:    SG_GET_LOW_DMA\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2119  		return put_user((int)sdev->host->unchecked_isa_dma, ip);
> 7ba0ec6097b45c Douglas Gilbert   2021-02-19  2120  	case SG_NEXT_CMD_LEN:	/* active only in v2 interface */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2121  		SG_LOG(3, sfp, "%s:    SG_NEXT_CMD_LEN\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2122  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2123  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2124  			return result;
> bf33f87dd04c37 peter chang       2017-02-15  2125  		if (val > SG_MAX_CDB_SIZE)
> bf33f87dd04c37 peter chang       2017-02-15  2126  			return -ENOMEM;
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2127  		mutex_lock(&sfp->f_mutex);
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2128  		sfp->next_cmd_len = max_t(int, val, 0);
> c4aaf4c540d32a Douglas Gilbert   2021-02-19  2129  		mutex_unlock(&sfp->f_mutex);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2130  		return 0;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2131  	case SG_GET_ACCESS_COUNT:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2132  		SG_LOG(3, sfp, "%s:    SG_GET_ACCESS_COUNT\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2133  		/* faked - we don't have a real access count anymore */
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2134  		val = (sdev ? 1 : 0);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2135  		return put_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2136  	case SG_EMULATED_HOST:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2137  		SG_LOG(3, sfp, "%s:    SG_EMULATED_HOST\n", __func__);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2138  		if (unlikely(SG_IS_DETACHING(sdp)))
> af1fc95db44560 Douglas Gilbert   2021-02-19  2139  			return -ENODEV;
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2140  		return put_user(sdev->host->hostt->emulated, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2141  	case SCSI_IOCTL_SEND_COMMAND:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2142  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_SEND_COMMAND\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2143  		return sg_scsi_ioctl(sdev->request_queue, NULL, filp->f_mode,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2144  				     p);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2145  	case SG_SET_DEBUG:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2146  		SG_LOG(3, sfp, "%s:    SG_SET_DEBUG\n", __func__);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2147  		result = get_user(val, ip);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2148  		if (result)
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2149  			return result;
> af1fc95db44560 Douglas Gilbert   2021-02-19  2150  		assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val);
> 0a3245bc182560 Douglas Gilbert   2021-02-19  2151  		if (val == 0)	/* user can force recalculation */
> 0a3245bc182560 Douglas Gilbert   2021-02-19  2152  			sg_calc_sgat_param(sdp);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2153  		return 0;
> 44ec95425c1d9d Alan Stern        2007-02-20  2154  	case BLKSECTGET:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2155  		SG_LOG(3, sfp, "%s:    BLKSECTGET\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2156  		return put_user(max_sectors_bytes(sdev->request_queue), ip);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2157  	case BLKTRACESETUP:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2158  		SG_LOG(3, sfp, "%s:    BLKTRACESETUP\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2159  		return blk_trace_setup(sdev->request_queue,
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2160  				       sdp->disk->disk_name,
> 76e3a19d0691bb Martin Peschke    2009-01-30  2161  				       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
> 7475c8ae1b7bfc Bart Van Assche   2017-08-25  2162  				       NULL, p);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2163  	case BLKTRACESTART:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2164  		SG_LOG(3, sfp, "%s:    BLKTRACESTART\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2165  		return blk_trace_startstop(sdev->request_queue, 1);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2166  	case BLKTRACESTOP:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2167  		SG_LOG(3, sfp, "%s:    BLKTRACESTOP\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2168  		return blk_trace_startstop(sdev->request_queue, 0);
> 6da127ad0918f9 Christof Schmitt  2008-01-11  2169  	case BLKTRACETEARDOWN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2170  		SG_LOG(3, sfp, "%s:    BLKTRACETEARDOWN\n", __func__);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2171  		return blk_trace_remove(sdev->request_queue);
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2172  	case SCSI_IOCTL_GET_IDLUN:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2173  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_IDLUN %s\n", __func__,
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2174  		       pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2175  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2176  	case SCSI_IOCTL_GET_BUS_NUMBER:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2177  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_GET_BUS_NUMBER%s\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2178  		       __func__, pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2179  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2180  	case SCSI_IOCTL_PROBE_HOST:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2181  		SG_LOG(3, sfp, "%s:    SCSI_IOCTL_PROBE_HOST%s",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2182  		       __func__, pmlp);
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2183  		break;
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2184  	case SG_GET_TRANSFORM:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2185  		SG_LOG(3, sfp, "%s:    SG_GET_TRANSFORM%s\n", __func__, pmlp);
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2186  		break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2187  	default:
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2188  		SG_LOG(3, sfp, "%s:    unrecognized ioctl [0x%x]%s\n",
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2189  		       __func__, cmd_in, pmlp);
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2190  		if (read_only)
> c99d01af2aa92f Douglas Gilbert   2021-02-19  2191  			return -EPERM;	/* don't know, so take safer approach */
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2192  		break;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2193  	}
> f24c409c880d71 Douglas Gilbert   2021-02-19  2194  	result = sg_allow_if_err_recovery(sdp, filp->f_flags & O_NDELAY);
> af1fc95db44560 Douglas Gilbert   2021-02-19  2195  	if (unlikely(result))
> 906d15fbd23c12 Christoph Hellwig 2014-10-11  2196  		return result;
> d320a9551e394c Arnd Bergmann     2019-03-15  2197  	return -ENOIOCTLCMD;
> ^1da177e4c3f41 Linus Torvalds    2005-04-16 @2198  }
> ^1da177e4c3f41 Linus Torvalds    2005-04-16  2199
> 
> :::::: The code at line 2198 was first introduced by commit
> :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
> 
> :::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
> :::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-13  1:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-12 12:38 [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes kernel test robot
2021-03-12 12:38 ` kernel test robot
2021-03-13  1:15 ` Douglas Gilbert
2021-03-13  1:15   ` Douglas Gilbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.