From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B1C2C433DB for ; Sat, 13 Mar 2021 01:16:35 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 81FB964F87 for ; Sat, 13 Mar 2021 01:16:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 81FB964F87 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=interlog.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 80EFA6B006C; Fri, 12 Mar 2021 20:16:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7BEFD6B006E; Fri, 12 Mar 2021 20:16:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6384B6B0070; Fri, 12 Mar 2021 20:16:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0172.hostedemail.com [216.40.44.172]) by kanga.kvack.org (Postfix) with ESMTP id 3BEBF6B006C for ; Fri, 12 Mar 2021 20:16:33 -0500 (EST) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id F2FEEB792 for ; Sat, 13 Mar 2021 01:16:32 +0000 (UTC) X-FDA: 77913085824.18.374E461 Received: from mail-1.ca.inter.net (mail-1.ca.inter.net [208.85.220.69]) by imf22.hostedemail.com (Postfix) with ESMTP id 2F02AC0481DA for ; Sat, 13 Mar 2021 01:16:27 +0000 (UTC) Received: from localhost (offload-3.ca.inter.net [208.85.220.70]) by mail-1.ca.inter.net (Postfix) with ESMTP id 864DA2EA3A8; Fri, 12 Mar 2021 20:15:48 -0500 (EST) Received: from mail-1.ca.inter.net ([208.85.220.69]) by localhost (offload-3.ca.inter.net [208.85.220.70]) (amavisd-new, port 10024) with ESMTP id pDk2Zj265Sqc; Fri, 12 Mar 2021 19:58:40 -0500 (EST) Received: from [192.168.48.23] (host-45-58-219-4.dyn.295.ca [45.58.219.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: dgilbert@interlog.com) by mail-1.ca.inter.net (Postfix) with ESMTPSA id 5B7BB2EA2DE; Fri, 12 Mar 2021 20:15:46 -0500 (EST) Reply-To: dgilbert@interlog.com Subject: Re: [linux-next:master 2408/4141] drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is larger than 2048 bytes To: kernel test robot Cc: kbuild-all@lists.01.org, Linux Memory Management List , "Martin K. Petersen" , Hannes Reinecke References: <202103122014.QKOyTdiv-lkp@intel.com> From: Douglas Gilbert Message-ID: Date: Fri, 12 Mar 2021 20:15:45 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <202103122014.QKOyTdiv-lkp@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-CA X-Stat-Signature: gujomygzcq3dp4tkktrr6chi8abk338r X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 2F02AC0481DA Received-SPF: none (interlog.com>: No applicable sender policy available) receiver=imf22; identity=mailfrom; envelope-from=""; helo=mail-1.ca.inter.net; client-ip=208.85.220.69 X-HE-DKIM-Result: none/none X-HE-Tag: 1615598187-559005 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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=3D1 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-n= ext.git/commit/?id=3Ded130bcd75fe26da9165d0a9f9df931aa8c47fc9 > 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=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.c= ross ARCH=3Darm >=20 > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot >=20 > All warnings (new ones prefixed by >>): >=20 > drivers/scsi/sg.c: In function 'sg_ioctl_common': >>> drivers/scsi/sg.c:2198:1: warning: the frame size of 2144 bytes is la= rger than 2048 bytes [-Wframe-larger-than=3D] > 2198 | } > | ^ > Hello, This just looks like nonsense. First the name: "frame-larger-than", WTH i= s that in the context of C? If it is talking about stack usage, then it sho= uld 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 >=20 > c99d01af2aa92f Douglas Gilbert 2021-02-19 1978 > 37b9d1e0017b2d J=F6rn Engel 2012-04-12 1979 static long > da0b8f731b3ccc Douglas Gilbert 2021-02-19 1980 sg_ioctl_common(stru= ct file *filp, struct sg_device *sdp, struct sg_fd *sfp, > d320a9551e394c Arnd Bergmann 2019-03-15 1981 unsigned int cmd_i= n, void __user *p) > ^1da177e4c3f41 Linus Torvalds 2005-04-16 1982 { > c99d01af2aa92f Douglas Gilbert 2021-02-19 1983 bool read_only =3D = O_RDWR !=3D (filp->f_flags & O_ACCMODE); > c99d01af2aa92f Douglas Gilbert 2021-02-19 1984 int val; > c99d01af2aa92f Douglas Gilbert 2021-02-19 1985 int result =3D 0; > ^1da177e4c3f41 Linus Torvalds 2005-04-16 1986 int __user *ip =3D = 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 cons= t char *pmlp =3D ", pass to mid-level"; > ^1da177e4c3f41 Linus Torvalds 2005-04-16 1991 > b0d532124dd2c2 Douglas Gilbert 2021-02-19 1992 SG_LOG(6, sfp, "%s:= cmd=3D0x%x, O_NONBLOCK=3D%d\n", __func__, cmd_in, > b0d532124dd2c2 Douglas Gilbert 2021-02-19 1993 !!(filp->f_f= lags & 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 =3D sdp->devic= e; > ^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_i= o(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_iosu= bmit(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_iosu= bmit_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_iore= ceive(filp, sfp, p); > ba044fa1d5f428 Douglas Gilbert 2021-02-19 2010 case SG_IORECEIVE_V= 3: > 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_iore= ceive_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_P= ACK_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 =3D get_use= r(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 =3D -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 =3D 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=3D%d\n", __func__, val); > c99d01af2aa92f Douglas Gilbert 2021-02-19 2031 return put_user(va= l, ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2032 case SG_GET_NUM_WAI= TING: > ed130bcd75fe26 Douglas Gilbert 2021-02-19 2033 val =3D atomic_rea= d(&sfp->waiting); > ed130bcd75fe26 Douglas Gilbert 2021-02-19 2034 if (val) > ed130bcd75fe26 Douglas Gilbert 2021-02-19 2035 return put_user(v= al, ip); > ed130bcd75fe26 Douglas Gilbert 2021-02-19 2036 return put_user(at= omic_read_acquire(&sfp->waiting), ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2037 case SG_GET_SG_TABL= ESIZE: > c99d01af2aa92f Douglas Gilbert 2021-02-19 2038 SG_LOG(3, sfp, "%s= : SG_GET_SG_TABLESIZE=3D%d\n", __func__, > c99d01af2aa92f Douglas Gilbert 2021-02-19 2039 sdp->max_sg= at_sz); > 48a7350dda38dc Douglas Gilbert 2021-02-19 2040 return put_user(sd= p->max_sgat_sz, ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2041 case SG_SET_RESERVE= D_SIZE: > c99d01af2aa92f Douglas Gilbert 2021-02-19 2042 result =3D get_use= r(val, ip); > c99d01af2aa92f Douglas Gilbert 2021-02-19 2043 if (!result) { > c99d01af2aa92f Douglas Gilbert 2021-02-19 2044 if (val >=3D 0 &&= val <=3D (1024 * 1024 * 1024)) { > af1fc95db44560 Douglas Gilbert 2021-02-19 2045 mutex_lock(&sfp-= >f_mutex); > c99d01af2aa92f Douglas Gilbert 2021-02-19 2046 result =3D sg_se= t_reserved_sz(sfp, val); > af1fc95db44560 Douglas Gilbert 2021-02-19 2047 mutex_unlock(&sf= p->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 =3D -EINV= AL; > 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_RESERVE= D_SIZE: > af1fc95db44560 Douglas Gilbert 2021-02-19 2055 mutex_lock(&sfp->f= _mutex); > af1fc95db44560 Douglas Gilbert 2021-02-19 2056 val =3D 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=3D%d\n", > c99d01af2aa92f Douglas Gilbert 2021-02-19 2060 __func__, v= al); > af1fc95db44560 Douglas Gilbert 2021-02-19 2061 result =3D put_use= r(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 =3D get_use= r(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(te= st_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2073 case SG_SET_KEEP_OR= PHAN: > 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 =3D get_use= r(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_OR= PHAN: > 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(te= st_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 =3D get_use= r(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 >=3D mult_= frac((s64)INT_MAX, USER_HZ, HZ)) > c99d01af2aa92f Douglas Gilbert 2021-02-19 2100 val =3D 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 = =3D val; > c99d01af2aa92f Douglas Gilbert 2021-02-19 2103 sfp->timeout =3D m= ult_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->timeou= t_user; > c99d01af2aa92f Douglas Gilbert 2021-02-19 2109 case SG_SET_FORCE_L= OW_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 w= ith 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((i= nt)sdev->host->unchecked_isa_dma, ip); > 7ba0ec6097b45c Douglas Gilbert 2021-02-19 2120 case SG_NEXT_CMD_LE= N: /* 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 =3D get_use= r(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_C= DB_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 = =3D 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 =3D (sdev ? 1 = : 0); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2135 return put_user(va= l, ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2136 case SG_EMULATED_HO= ST: > 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(sd= ev->host->hostt->emulated, ip); > ^1da177e4c3f41 Linus Torvalds 2005-04-16 2141 case SCSI_IOCTL_SEN= D_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_ioc= tl(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 =3D get_use= r(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 =3D=3D 0) = /* user can force recalculation */ > 0a3245bc182560 Douglas Gilbert 2021-02-19 2152 sg_calc_sgat_para= m(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(ma= x_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_s= etup(sdev->request_queue, > 6da127ad0918f9 Christof Schmitt 2008-01-11 2160 sdp->disk= ->disk_name, > 76e3a19d0691bb Martin Peschke 2009-01-30 2161 MKDEV(SCS= I_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_s= tartstop(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_s= tartstop(sdev->request_queue, 0); > 6da127ad0918f9 Christof Schmitt 2008-01-11 2169 case BLKTRACETEARDO= WN: > 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_r= emove(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__, p= mlp); > c99d01af2aa92f Douglas Gilbert 2021-02-19 2179 break; > 906d15fbd23c12 Christoph Hellwig 2014-10-11 2180 case SCSI_IOCTL_PRO= BE_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__, p= mlp); > c99d01af2aa92f Douglas Gilbert 2021-02-19 2183 break; > 906d15fbd23c12 Christoph Hellwig 2014-10-11 2184 case SG_GET_TRANSFO= RM: > 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__, c= md_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 =3D 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 >=20 > :::::: The code at line 2198 was first introduced by commit > :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 >=20 > :::::: TO: Linus Torvalds > :::::: CC: Linus Torvalds >=20 > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org >=20