From: kernel test robot <lkp@intel.com>
To: Guixin Liu <kanie@linux.alibaba.com>,
gregkh@linuxfoundation.org, bostroesser@gmail.com,
martin.petersen@oracle.com
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-scsi@vger.kernel.org, target-devel@vger.kernel.org,
linux-kernel@vger.kernel.org, xiaoguang.wang@linux.alibaba.com,
xlpang@linux.alibaba.com
Subject: Re: [PATCH 2/2] scsi:target:tcmu: reduce once copy by using uio ioctl
Date: Thu, 17 Feb 2022 16:07:28 +0800 [thread overview]
Message-ID: <202202171541.grdjAOIT-lkp@intel.com> (raw)
In-Reply-To: <1645064962-94123-2-git-send-email-kanie@linux.alibaba.com>
Hi Guixin,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on mkp-scsi/for-next linux/master linus/master v5.17-rc4 next-20220216]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Guixin-Liu/uio-add-ioctl-to-uio/20220217-103120
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git e6cb9c167eeb8f90ab924666c573e69e85e700a0
config: riscv-randconfig-r042-20220217 (https://download.01.org/0day-ci/archive/20220217/202202171541.grdjAOIT-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0bad7cb56526f2572c74449fcf97c1fcda42b41d)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/c604d03c2be8ca4b3533bb151bcd2d10379debff
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Guixin-Liu/uio-add-ioctl-to-uio/20220217-103120
git checkout c604d03c2be8ca4b3533bb151bcd2d10379debff
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/target/
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/target/target_core_user.c:1987:6: warning: no previous prototype for function 'tcmu_ioctl_copy_between_sgl_and_iovec' [-Wmissing-prototypes]
long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
^
drivers/target/target_core_user.c:1987:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
^
static
>> drivers/target/target_core_user.c:2031:6: warning: no previous prototype for function 'tcmu_ioctl' [-Wmissing-prototypes]
long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
^
drivers/target/target_core_user.c:2031:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
^
static
2 warnings generated.
vim +/tcmu_ioctl_copy_between_sgl_and_iovec +1987 drivers/target/target_core_user.c
1986
> 1987 long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
1988 struct iovec __user *uiovec,
1989 unsigned long vcnt,
1990 bool is_copy_to_sgl)
1991 {
1992 struct iovec iovstack[UIO_FASTIOV];
1993 struct iovec *iov = iovstack;
1994 struct iov_iter iter;
1995 ssize_t ret;
1996 struct se_cmd *se_cmd = tcmu_cmd->se_cmd;
1997 struct scatterlist *data_sg, *sg;
1998 int i;
1999 unsigned int data_nents;
2000 long copy_ret = 0;
2001
2002 if (se_cmd->se_cmd_flags & SCF_BIDI) {
2003 data_sg = se_cmd->t_bidi_data_sg;
2004 data_nents = se_cmd->t_bidi_data_nents;
2005 } else {
2006 data_sg = se_cmd->t_data_sg;
2007 data_nents = se_cmd->t_data_nents;
2008 }
2009
2010 ret = import_iovec(READ, uiovec, vcnt, ARRAY_SIZE(iovstack), &iov, &iter);
2011 if (ret < 0) {
2012 pr_err("import iovec failed.\n");
2013 return -EFAULT;
2014 }
2015
2016 for_each_sg(data_sg, sg, data_nents, i) {
2017 if (is_copy_to_sgl)
2018 ret = copy_page_from_iter(sg_page(sg), sg->offset, sg->length, &iter);
2019 else
2020 ret = copy_page_to_iter(sg_page(sg), sg->offset, sg->length, &iter);
2021 if (ret < 0) {
2022 pr_err("copy failed.\n");
2023 copy_ret = -EFAULT;
2024 break;
2025 }
2026 }
2027 kfree(iov);
2028 return copy_ret;
2029 }
2030
> 2031 long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
2032 {
2033 struct tcmu_dev *udev = container_of(info, struct tcmu_dev, uio_info);
2034 struct tcmu_data_xfer __user *uxfer = (struct tcmu_data_xfer __user *)arg;
2035 struct tcmu_data_xfer xfer;
2036 struct tcmu_cmd *tcmu_cmd;
2037
2038 if (!test_bit(TCMU_DEV_BIT_BYPASS_DATA_AREA, &udev->flags))
2039 return -EINVAL;
2040
2041 if (copy_from_user(&xfer, uxfer, sizeof(xfer)))
2042 return -EFAULT;
2043
2044 tcmu_cmd = xa_load(&udev->commands, xfer.cmd_id);
2045 if (!tcmu_cmd) {
2046 set_bit(TCMU_DEV_BIT_BROKEN, &udev->flags);
2047 return -EFAULT;
2048 }
2049
2050 if (test_bit(TCMU_CMD_BIT_EXPIRED, &tcmu_cmd->flags))
2051 return -EFAULT;
2052
2053 switch (cmd) {
2054 case TCMU_IOCTL_CMD_COPY_TO_SGL:
2055 return tcmu_ioctl_copy_between_sgl_and_iovec(tcmu_cmd, xfer.iovec,
2056 xfer.iov_cnt, true);
2057 case TCMU_IOCTL_CMD_COPY_FROM_SGL:
2058 return tcmu_ioctl_copy_between_sgl_and_iovec(tcmu_cmd, xfer.iovec,
2059 xfer.iov_cnt, false);
2060 default:
2061 return -EINVAL;
2062 }
2063 }
2064
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 2/2] scsi:target:tcmu: reduce once copy by using uio ioctl
Date: Thu, 17 Feb 2022 16:07:28 +0800 [thread overview]
Message-ID: <202202171541.grdjAOIT-lkp@intel.com> (raw)
In-Reply-To: <1645064962-94123-2-git-send-email-kanie@linux.alibaba.com>
[-- Attachment #1: Type: text/plain, Size: 5701 bytes --]
Hi Guixin,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on mkp-scsi/for-next linux/master linus/master v5.17-rc4 next-20220216]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Guixin-Liu/uio-add-ioctl-to-uio/20220217-103120
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git e6cb9c167eeb8f90ab924666c573e69e85e700a0
config: riscv-randconfig-r042-20220217 (https://download.01.org/0day-ci/archive/20220217/202202171541.grdjAOIT-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0bad7cb56526f2572c74449fcf97c1fcda42b41d)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/c604d03c2be8ca4b3533bb151bcd2d10379debff
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Guixin-Liu/uio-add-ioctl-to-uio/20220217-103120
git checkout c604d03c2be8ca4b3533bb151bcd2d10379debff
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/target/
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/target/target_core_user.c:1987:6: warning: no previous prototype for function 'tcmu_ioctl_copy_between_sgl_and_iovec' [-Wmissing-prototypes]
long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
^
drivers/target/target_core_user.c:1987:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
^
static
>> drivers/target/target_core_user.c:2031:6: warning: no previous prototype for function 'tcmu_ioctl' [-Wmissing-prototypes]
long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
^
drivers/target/target_core_user.c:2031:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
^
static
2 warnings generated.
vim +/tcmu_ioctl_copy_between_sgl_and_iovec +1987 drivers/target/target_core_user.c
1986
> 1987 long tcmu_ioctl_copy_between_sgl_and_iovec(struct tcmu_cmd *tcmu_cmd,
1988 struct iovec __user *uiovec,
1989 unsigned long vcnt,
1990 bool is_copy_to_sgl)
1991 {
1992 struct iovec iovstack[UIO_FASTIOV];
1993 struct iovec *iov = iovstack;
1994 struct iov_iter iter;
1995 ssize_t ret;
1996 struct se_cmd *se_cmd = tcmu_cmd->se_cmd;
1997 struct scatterlist *data_sg, *sg;
1998 int i;
1999 unsigned int data_nents;
2000 long copy_ret = 0;
2001
2002 if (se_cmd->se_cmd_flags & SCF_BIDI) {
2003 data_sg = se_cmd->t_bidi_data_sg;
2004 data_nents = se_cmd->t_bidi_data_nents;
2005 } else {
2006 data_sg = se_cmd->t_data_sg;
2007 data_nents = se_cmd->t_data_nents;
2008 }
2009
2010 ret = import_iovec(READ, uiovec, vcnt, ARRAY_SIZE(iovstack), &iov, &iter);
2011 if (ret < 0) {
2012 pr_err("import iovec failed.\n");
2013 return -EFAULT;
2014 }
2015
2016 for_each_sg(data_sg, sg, data_nents, i) {
2017 if (is_copy_to_sgl)
2018 ret = copy_page_from_iter(sg_page(sg), sg->offset, sg->length, &iter);
2019 else
2020 ret = copy_page_to_iter(sg_page(sg), sg->offset, sg->length, &iter);
2021 if (ret < 0) {
2022 pr_err("copy failed.\n");
2023 copy_ret = -EFAULT;
2024 break;
2025 }
2026 }
2027 kfree(iov);
2028 return copy_ret;
2029 }
2030
> 2031 long tcmu_ioctl(struct uio_info *info, unsigned int cmd, unsigned long arg)
2032 {
2033 struct tcmu_dev *udev = container_of(info, struct tcmu_dev, uio_info);
2034 struct tcmu_data_xfer __user *uxfer = (struct tcmu_data_xfer __user *)arg;
2035 struct tcmu_data_xfer xfer;
2036 struct tcmu_cmd *tcmu_cmd;
2037
2038 if (!test_bit(TCMU_DEV_BIT_BYPASS_DATA_AREA, &udev->flags))
2039 return -EINVAL;
2040
2041 if (copy_from_user(&xfer, uxfer, sizeof(xfer)))
2042 return -EFAULT;
2043
2044 tcmu_cmd = xa_load(&udev->commands, xfer.cmd_id);
2045 if (!tcmu_cmd) {
2046 set_bit(TCMU_DEV_BIT_BROKEN, &udev->flags);
2047 return -EFAULT;
2048 }
2049
2050 if (test_bit(TCMU_CMD_BIT_EXPIRED, &tcmu_cmd->flags))
2051 return -EFAULT;
2052
2053 switch (cmd) {
2054 case TCMU_IOCTL_CMD_COPY_TO_SGL:
2055 return tcmu_ioctl_copy_between_sgl_and_iovec(tcmu_cmd, xfer.iovec,
2056 xfer.iov_cnt, true);
2057 case TCMU_IOCTL_CMD_COPY_FROM_SGL:
2058 return tcmu_ioctl_copy_between_sgl_and_iovec(tcmu_cmd, xfer.iovec,
2059 xfer.iov_cnt, false);
2060 default:
2061 return -EINVAL;
2062 }
2063 }
2064
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next prev parent reply other threads:[~2022-02-17 8:08 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-17 2:29 [PATCH 1/2] uio: add ioctl to uio Guixin Liu
2022-02-17 2:29 ` [PATCH 2/2] scsi:target:tcmu: reduce once copy by using uio ioctl Guixin Liu
2022-02-17 6:45 ` kernel test robot
2022-02-17 6:45 ` kernel test robot
2022-02-17 8:07 ` kernel test robot [this message]
2022-02-17 8:07 ` kernel test robot
2022-02-17 10:15 ` Greg KH
2022-02-17 11:13 ` Xiaoguang Wang
2022-02-17 12:28 ` Greg KH
2022-02-17 11:10 ` [RFC PATCH] scsi:target:tcmu: tcmu_ioctl_copy_between_sgl_and_iovec() can be static kernel test robot
2022-02-17 11:10 ` kernel test robot
2022-02-17 11:12 ` [PATCH 2/2] scsi:target:tcmu: reduce once copy by using uio ioctl kernel test robot
2022-02-17 11:12 ` kernel test robot
2022-02-21 17:09 ` Bodo Stroesser
2022-02-28 8:52 ` Xiaoguang Wang
2022-02-28 10:47 ` Greg KH
2022-02-17 6:13 ` [PATCH 1/2] uio: add ioctl to uio Greg KH
[not found] ` <362edb61-b8ad-495e-2346-8020355c0938@linux.alibaba.com>
2022-02-17 12:30 ` Greg KH
2022-02-17 12:30 ` Xiaoguang Wang
2022-02-17 6:55 ` kernel test robot
2022-02-17 6:55 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202171541.grdjAOIT-lkp@intel.com \
--to=lkp@intel.com \
--cc=bostroesser@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kanie@linux.alibaba.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=martin.petersen@oracle.com \
--cc=target-devel@vger.kernel.org \
--cc=xiaoguang.wang@linux.alibaba.com \
--cc=xlpang@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.