Hi Douglas, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mkp-scsi/for-next] [also build test WARNING on scsi/for-next linus/master v5.6-rc3 next-20200228] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Douglas-Gilbert/sg-add-v4-interface/20200228-205828 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: i386-allyesconfig (attached as .config) compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All warnings (new ones prefixed by >>): drivers//scsi/sg.c: In function 'sg_receive_v4': drivers//scsi/sg.c:1234:18: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] h4p->response = (u64)srp->s_hdr4.sbp; ^ drivers//scsi/sg.c: In function 'sg_ioctl_common': >> drivers//scsi/sg.c:2074:1: warning: the frame size of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=] } ^ vim +2074 drivers//scsi/sg.c e9a6fc36629575 Douglas Gilbert 2020-02-27 1863 37b9d1e0017b2d Jörn Engel 2012-04-12 1864 static long 2e69ea3df607a4 Douglas Gilbert 2020-02-27 1865 sg_ioctl_common(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp, d320a9551e394c Arnd Bergmann 2019-03-15 1866 unsigned int cmd_in, void __user *p) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1867 { e9a6fc36629575 Douglas Gilbert 2020-02-27 1868 bool read_only = O_RDWR != (filp->f_flags & O_ACCMODE); e9a6fc36629575 Douglas Gilbert 2020-02-27 1869 int val; e9a6fc36629575 Douglas Gilbert 2020-02-27 1870 int result = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1871 int __user *ip = p; 2e69ea3df607a4 Douglas Gilbert 2020-02-27 1872 struct sg_request *srp; e9a6fc36629575 Douglas Gilbert 2020-02-27 1873 struct scsi_device *sdev; f6652476691f24 Douglas Gilbert 2020-02-27 1874 unsigned long idx; e9a6fc36629575 Douglas Gilbert 2020-02-27 1875 __maybe_unused const char *pmlp = ", pass to mid-level"; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1876 d92b69363fbad1 Douglas Gilbert 2020-02-27 1877 SG_LOG(6, sfp, "%s: cmd=0x%x, O_NONBLOCK=%d\n", __func__, cmd_in, d92b69363fbad1 Douglas Gilbert 2020-02-27 1878 !!(filp->f_flags & O_NONBLOCK)); e9a6fc36629575 Douglas Gilbert 2020-02-27 1879 if (unlikely(SG_IS_DETACHING(sdp))) e9a6fc36629575 Douglas Gilbert 2020-02-27 1880 return -ENODEV; e9a6fc36629575 Douglas Gilbert 2020-02-27 1881 sdev = sdp->device; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1882 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1883 switch (cmd_in) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1884 case SG_IO: e9a6fc36629575 Douglas Gilbert 2020-02-27 1885 return sg_ctl_sg_io(filp, sdp, sfp, p); 164fadf16aae69 Douglas Gilbert 2020-02-27 1886 case SG_IOSUBMIT: 164fadf16aae69 Douglas Gilbert 2020-02-27 1887 SG_LOG(3, sfp, "%s: SG_IOSUBMIT\n", __func__); 164fadf16aae69 Douglas Gilbert 2020-02-27 1888 return sg_ctl_iosubmit(filp, sfp, p); 164fadf16aae69 Douglas Gilbert 2020-02-27 1889 case SG_IORECEIVE: 164fadf16aae69 Douglas Gilbert 2020-02-27 1890 SG_LOG(3, sfp, "%s: SG_IORECEIVE\n", __func__); 164fadf16aae69 Douglas Gilbert 2020-02-27 1891 return sg_ctl_ioreceive(filp, sfp, p); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1892 case SG_GET_SCSI_ID: e9a6fc36629575 Douglas Gilbert 2020-02-27 1893 return sg_ctl_scsi_id(sdev, sfp, p); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1894 case SG_SET_FORCE_PACK_ID: e9a6fc36629575 Douglas Gilbert 2020-02-27 1895 SG_LOG(3, sfp, "%s: SG_SET_FORCE_PACK_ID\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1896 result = get_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1897 if (result) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1898 return result; 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1899 assign_bit(SG_FFD_FORCE_PACKID, sfp->ffd_bm, !!val); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1900 return 0; 5c0a9d591daedc Douglas Gilbert 2020-02-27 1901 case SG_GET_PACK_ID: /* or tag of oldest "read"-able, -1 if none */ e9a6fc36629575 Douglas Gilbert 2020-02-27 1902 val = -1; f6652476691f24 Douglas Gilbert 2020-02-27 1903 xa_for_each_marked(&sfp->srp_arr, idx, srp, SG_XA_RQ_AWAIT) { f6652476691f24 Douglas Gilbert 2020-02-27 1904 if (!srp) f6652476691f24 Douglas Gilbert 2020-02-27 1905 continue; 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1906 val = srp->pack_id; e9a6fc36629575 Douglas Gilbert 2020-02-27 1907 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1908 } e9a6fc36629575 Douglas Gilbert 2020-02-27 1909 SG_LOG(3, sfp, "%s: SG_GET_PACK_ID=%d\n", __func__, val); e9a6fc36629575 Douglas Gilbert 2020-02-27 1910 return put_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1911 case SG_GET_NUM_WAITING: dafd31b0fcfdc9 Douglas Gilbert 2020-02-27 1912 return put_user(atomic_read(&sfp->waiting), ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1913 case SG_GET_SG_TABLESIZE: e9a6fc36629575 Douglas Gilbert 2020-02-27 1914 SG_LOG(3, sfp, "%s: SG_GET_SG_TABLESIZE=%d\n", __func__, e9a6fc36629575 Douglas Gilbert 2020-02-27 1915 sdp->max_sgat_sz); 1ee385d070dc3b Douglas Gilbert 2020-02-27 1916 return put_user(sdp->max_sgat_sz, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1917 case SG_SET_RESERVED_SIZE: e9a6fc36629575 Douglas Gilbert 2020-02-27 1918 result = get_user(val, ip); e9a6fc36629575 Douglas Gilbert 2020-02-27 1919 if (!result) { e9a6fc36629575 Douglas Gilbert 2020-02-27 1920 if (val >= 0 && val <= (1024 * 1024 * 1024)) { 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1921 mutex_lock(&sfp->f_mutex); e9a6fc36629575 Douglas Gilbert 2020-02-27 1922 result = sg_set_reserved_sz(sfp, val); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1923 mutex_unlock(&sfp->f_mutex); e9a6fc36629575 Douglas Gilbert 2020-02-27 1924 } else { e9a6fc36629575 Douglas Gilbert 2020-02-27 1925 SG_LOG(3, sfp, "%s: invalid size\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1926 result = -EINVAL; 1bc0eb0446158c Hannes Reinecke 2017-04-07 1927 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1928 } e9a6fc36629575 Douglas Gilbert 2020-02-27 1929 return result; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1930 case SG_GET_RESERVED_SIZE: 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1931 mutex_lock(&sfp->f_mutex); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1932 val = min_t(int, sfp->rsv_srp->sgat_h.buflen, 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1933 sdp->max_sgat_sz); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1934 mutex_unlock(&sfp->f_mutex); e9a6fc36629575 Douglas Gilbert 2020-02-27 1935 SG_LOG(3, sfp, "%s: SG_GET_RESERVED_SIZE=%d\n", e9a6fc36629575 Douglas Gilbert 2020-02-27 1936 __func__, val); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1937 result = put_user(val, ip); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1938 return result; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1939 case SG_SET_COMMAND_Q: e9a6fc36629575 Douglas Gilbert 2020-02-27 1940 SG_LOG(3, sfp, "%s: SG_SET_COMMAND_Q\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1941 result = get_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1942 if (result) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1943 return result; 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1944 assign_bit(SG_FFD_CMD_Q, sfp->ffd_bm, !!val); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1945 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1946 case SG_GET_COMMAND_Q: e9a6fc36629575 Douglas Gilbert 2020-02-27 1947 SG_LOG(3, sfp, "%s: SG_GET_COMMAND_Q\n", __func__); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1948 return put_user(test_bit(SG_FFD_CMD_Q, sfp->ffd_bm), ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1949 case SG_SET_KEEP_ORPHAN: e9a6fc36629575 Douglas Gilbert 2020-02-27 1950 SG_LOG(3, sfp, "%s: SG_SET_KEEP_ORPHAN\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1951 result = get_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1952 if (result) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1953 return result; 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1954 assign_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm, !!val); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1955 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1956 case SG_GET_KEEP_ORPHAN: e9a6fc36629575 Douglas Gilbert 2020-02-27 1957 SG_LOG(3, sfp, "%s: SG_GET_KEEP_ORPHAN\n", __func__); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1958 return put_user(test_bit(SG_FFD_KEEP_ORPHAN, sfp->ffd_bm), 20d8ebcd78db48 Douglas Gilbert 2020-02-27 1959 ip); e9a6fc36629575 Douglas Gilbert 2020-02-27 1960 case SG_GET_VERSION_NUM: e9a6fc36629575 Douglas Gilbert 2020-02-27 1961 SG_LOG(3, sfp, "%s: SG_GET_VERSION_NUM\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1962 return put_user(sg_version_num, ip); e9a6fc36629575 Douglas Gilbert 2020-02-27 1963 case SG_GET_REQUEST_TABLE: e9a6fc36629575 Douglas Gilbert 2020-02-27 1964 return sg_ctl_req_tbl(sfp, p); e9a6fc36629575 Douglas Gilbert 2020-02-27 1965 case SG_SCSI_RESET: e9a6fc36629575 Douglas Gilbert 2020-02-27 1966 SG_LOG(3, sfp, "%s: SG_SCSI_RESET\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1967 break; e9a6fc36629575 Douglas Gilbert 2020-02-27 1968 case SG_SET_TIMEOUT: e9a6fc36629575 Douglas Gilbert 2020-02-27 1969 SG_LOG(3, sfp, "%s: SG_SET_TIMEOUT\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1970 result = get_user(val, ip); e9a6fc36629575 Douglas Gilbert 2020-02-27 1971 if (result) e9a6fc36629575 Douglas Gilbert 2020-02-27 1972 return result; e9a6fc36629575 Douglas Gilbert 2020-02-27 1973 if (val < 0) e9a6fc36629575 Douglas Gilbert 2020-02-27 1974 return -EIO; e9a6fc36629575 Douglas Gilbert 2020-02-27 1975 if (val >= mult_frac((s64)INT_MAX, USER_HZ, HZ)) e9a6fc36629575 Douglas Gilbert 2020-02-27 1976 val = min_t(s64, mult_frac((s64)INT_MAX, USER_HZ, HZ), e9a6fc36629575 Douglas Gilbert 2020-02-27 1977 INT_MAX); e9a6fc36629575 Douglas Gilbert 2020-02-27 1978 sfp->timeout_user = val; e9a6fc36629575 Douglas Gilbert 2020-02-27 1979 sfp->timeout = mult_frac(val, HZ, USER_HZ); e9a6fc36629575 Douglas Gilbert 2020-02-27 1980 return 0; e9a6fc36629575 Douglas Gilbert 2020-02-27 1981 case SG_GET_TIMEOUT: /* N.B. User receives timeout as return value */ e9a6fc36629575 Douglas Gilbert 2020-02-27 1982 /* strange ..., for backward compatibility */ e9a6fc36629575 Douglas Gilbert 2020-02-27 1983 SG_LOG(3, sfp, "%s: SG_GET_TIMEOUT\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1984 return sfp->timeout_user; e9a6fc36629575 Douglas Gilbert 2020-02-27 1985 case SG_SET_FORCE_LOW_DMA: e9a6fc36629575 Douglas Gilbert 2020-02-27 1986 /* e9a6fc36629575 Douglas Gilbert 2020-02-27 1987 * N.B. This ioctl never worked properly, but failed to e9a6fc36629575 Douglas Gilbert 2020-02-27 1988 * return an error value. So returning '0' to keep e9a6fc36629575 Douglas Gilbert 2020-02-27 1989 * compatibility with legacy applications. e9a6fc36629575 Douglas Gilbert 2020-02-27 1990 */ e9a6fc36629575 Douglas Gilbert 2020-02-27 1991 SG_LOG(3, sfp, "%s: SG_SET_FORCE_LOW_DMA\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1992 return 0; e9a6fc36629575 Douglas Gilbert 2020-02-27 1993 case SG_GET_LOW_DMA: e9a6fc36629575 Douglas Gilbert 2020-02-27 1994 SG_LOG(3, sfp, "%s: SG_GET_LOW_DMA\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 1995 return put_user((int)sdev->host->unchecked_isa_dma, ip); b2b2e4df0305e7 Douglas Gilbert 2020-02-27 1996 case SG_NEXT_CMD_LEN: /* active only in v2 interface */ e9a6fc36629575 Douglas Gilbert 2020-02-27 1997 SG_LOG(3, sfp, "%s: SG_NEXT_CMD_LEN\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1998 result = get_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1999 if (result) ^1da177e4c3f41 Linus Torvalds 2005-04-16 2000 return result; bf33f87dd04c37 peter chang 2017-02-15 2001 if (val > SG_MAX_CDB_SIZE) bf33f87dd04c37 peter chang 2017-02-15 2002 return -ENOMEM; 671c65317016c2 Douglas Gilbert 2020-02-27 2003 mutex_lock(&sfp->f_mutex); 671c65317016c2 Douglas Gilbert 2020-02-27 2004 sfp->next_cmd_len = max_t(int, val, 0); 671c65317016c2 Douglas Gilbert 2020-02-27 2005 mutex_unlock(&sfp->f_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2006 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2007 case SG_GET_ACCESS_COUNT: e9a6fc36629575 Douglas Gilbert 2020-02-27 2008 SG_LOG(3, sfp, "%s: SG_GET_ACCESS_COUNT\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2009 /* faked - we don't have a real access count anymore */ e9a6fc36629575 Douglas Gilbert 2020-02-27 2010 val = (sdev ? 1 : 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2011 return put_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2012 case SG_EMULATED_HOST: e9a6fc36629575 Douglas Gilbert 2020-02-27 2013 SG_LOG(3, sfp, "%s: SG_EMULATED_HOST\n", __func__); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 2014 if (unlikely(SG_IS_DETACHING(sdp))) 20d8ebcd78db48 Douglas Gilbert 2020-02-27 2015 return -ENODEV; e9a6fc36629575 Douglas Gilbert 2020-02-27 2016 return put_user(sdev->host->hostt->emulated, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2017 case SCSI_IOCTL_SEND_COMMAND: e9a6fc36629575 Douglas Gilbert 2020-02-27 2018 SG_LOG(3, sfp, "%s: SCSI_IOCTL_SEND_COMMAND\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2019 return sg_scsi_ioctl(sdev->request_queue, NULL, filp->f_mode, e9a6fc36629575 Douglas Gilbert 2020-02-27 2020 p); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2021 case SG_SET_DEBUG: e9a6fc36629575 Douglas Gilbert 2020-02-27 2022 SG_LOG(3, sfp, "%s: SG_SET_DEBUG\n", __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2023 result = get_user(val, ip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2024 if (result) ^1da177e4c3f41 Linus Torvalds 2005-04-16 2025 return result; 20d8ebcd78db48 Douglas Gilbert 2020-02-27 2026 assign_bit(SG_FDEV_LOG_SENSE, sdp->fdev_bm, !!val); 0b192c5441f451 Douglas Gilbert 2020-02-27 2027 if (val == 0) /* user can force recalculation */ 0b192c5441f451 Douglas Gilbert 2020-02-27 2028 sg_calc_sgat_param(sdp); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2029 return 0; 44ec95425c1d9d Alan Stern 2007-02-20 2030 case BLKSECTGET: e9a6fc36629575 Douglas Gilbert 2020-02-27 2031 SG_LOG(3, sfp, "%s: BLKSECTGET\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2032 return put_user(max_sectors_bytes(sdev->request_queue), ip); 6da127ad0918f9 Christof Schmitt 2008-01-11 2033 case BLKTRACESETUP: e9a6fc36629575 Douglas Gilbert 2020-02-27 2034 SG_LOG(3, sfp, "%s: BLKTRACESETUP\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2035 return blk_trace_setup(sdev->request_queue, 6da127ad0918f9 Christof Schmitt 2008-01-11 2036 sdp->disk->disk_name, 76e3a19d0691bb Martin Peschke 2009-01-30 2037 MKDEV(SCSI_GENERIC_MAJOR, sdp->index), 7475c8ae1b7bfc Bart Van Assche 2017-08-25 2038 NULL, p); 6da127ad0918f9 Christof Schmitt 2008-01-11 2039 case BLKTRACESTART: e9a6fc36629575 Douglas Gilbert 2020-02-27 2040 SG_LOG(3, sfp, "%s: BLKTRACESTART\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2041 return blk_trace_startstop(sdev->request_queue, 1); 6da127ad0918f9 Christof Schmitt 2008-01-11 2042 case BLKTRACESTOP: e9a6fc36629575 Douglas Gilbert 2020-02-27 2043 SG_LOG(3, sfp, "%s: BLKTRACESTOP\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2044 return blk_trace_startstop(sdev->request_queue, 0); 6da127ad0918f9 Christof Schmitt 2008-01-11 2045 case BLKTRACETEARDOWN: e9a6fc36629575 Douglas Gilbert 2020-02-27 2046 SG_LOG(3, sfp, "%s: BLKTRACETEARDOWN\n", __func__); e9a6fc36629575 Douglas Gilbert 2020-02-27 2047 return blk_trace_remove(sdev->request_queue); 906d15fbd23c12 Christoph Hellwig 2014-10-11 2048 case SCSI_IOCTL_GET_IDLUN: e9a6fc36629575 Douglas Gilbert 2020-02-27 2049 SG_LOG(3, sfp, "%s: SCSI_IOCTL_GET_IDLUN %s\n", __func__, e9a6fc36629575 Douglas Gilbert 2020-02-27 2050 pmlp); e9a6fc36629575 Douglas Gilbert 2020-02-27 2051 break; 906d15fbd23c12 Christoph Hellwig 2014-10-11 2052 case SCSI_IOCTL_GET_BUS_NUMBER: e9a6fc36629575 Douglas Gilbert 2020-02-27 2053 SG_LOG(3, sfp, "%s: SCSI_IOCTL_GET_BUS_NUMBER%s\n", e9a6fc36629575 Douglas Gilbert 2020-02-27 2054 __func__, pmlp); e9a6fc36629575 Douglas Gilbert 2020-02-27 2055 break; 906d15fbd23c12 Christoph Hellwig 2014-10-11 2056 case SCSI_IOCTL_PROBE_HOST: e9a6fc36629575 Douglas Gilbert 2020-02-27 2057 SG_LOG(3, sfp, "%s: SCSI_IOCTL_PROBE_HOST%s", e9a6fc36629575 Douglas Gilbert 2020-02-27 2058 __func__, pmlp); e9a6fc36629575 Douglas Gilbert 2020-02-27 2059 break; 906d15fbd23c12 Christoph Hellwig 2014-10-11 2060 case SG_GET_TRANSFORM: e9a6fc36629575 Douglas Gilbert 2020-02-27 2061 SG_LOG(3, sfp, "%s: SG_GET_TRANSFORM%s\n", __func__, pmlp); 906d15fbd23c12 Christoph Hellwig 2014-10-11 2062 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2063 default: e9a6fc36629575 Douglas Gilbert 2020-02-27 2064 SG_LOG(3, sfp, "%s: unrecognized ioctl [0x%x]%s\n", e9a6fc36629575 Douglas Gilbert 2020-02-27 2065 __func__, cmd_in, pmlp); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2066 if (read_only) e9a6fc36629575 Douglas Gilbert 2020-02-27 2067 return -EPERM; /* don't know, so take safer approach */ 906d15fbd23c12 Christoph Hellwig 2014-10-11 2068 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2069 } 98dd8630b9e9cb Douglas Gilbert 2020-02-27 2070 result = sg_allow_if_err_recovery(sdp, filp->f_flags & O_NDELAY); 20d8ebcd78db48 Douglas Gilbert 2020-02-27 2071 if (unlikely(result)) 906d15fbd23c12 Christoph Hellwig 2014-10-11 2072 return result; d320a9551e394c Arnd Bergmann 2019-03-15 2073 return -ENOIOCTLCMD; ^1da177e4c3f41 Linus Torvalds 2005-04-16 @2074 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 2075 :::::: The code at line 2074 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds :::::: CC: Linus Torvalds --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org