From: kernel test robot <lkp@intel.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
dri-devel@lists.freedesktop.org,
iommu@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
David Airlie <airlied@linux.ie>,
Alexandre Bounine <alex.bou9@gmail.com>,
Matt Porter <mporter@kernel.crashing.org>,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v7 33/36] rapidio: fix common struct sg_table related issues
Date: Sun, 21 Jun 2020 09:23:19 +0800 [thread overview]
Message-ID: <202006210924.l7ZUJ53c%lkp@intel.com> (raw)
In-Reply-To: <20200619103636.11974-34-m.szyprowski@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14328 bytes --]
Hi Marek,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20200618]
[also build test WARNING on v5.8-rc1]
[cannot apply to linuxtv-media/master staging/staging-testing drm-exynos/exynos-drm-next drm-intel/for-linux-next linus/master v5.8-rc1 v5.7 v5.7-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200619-184302
base: ce2cc8efd7a40cbd17841add878cb691d0ce0bba
config: x86_64-randconfig-r005-20200621 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ef455a55bcf2cfea04a99c361b182ad18b7f03f1)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
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 >>, old ones prefixed by <<):
>> drivers/rapidio/devices/rio_mport_cdev.c:939:40: warning: variable 'nents' is uninitialized when used here [-Wuninitialized]
ret = do_dma_request(req, xfer, sync, nents);
^~~~~
drivers/rapidio/devices/rio_mport_cdev.c:816:11: note: initialize the variable 'nents' to silence this warning
int nents;
^
= 0
1 warning generated.
vim +/nents +939 drivers/rapidio/devices/rio_mport_cdev.c
e8de370188d098 Alexandre Bounine 2016-03-22 793
e8de370188d098 Alexandre Bounine 2016-03-22 794 /*
e8de370188d098 Alexandre Bounine 2016-03-22 795 * rio_dma_transfer() - Perform RapidIO DMA data transfer to/from
e8de370188d098 Alexandre Bounine 2016-03-22 796 * the remote RapidIO device
e8de370188d098 Alexandre Bounine 2016-03-22 797 * @filp: file pointer associated with the call
e8de370188d098 Alexandre Bounine 2016-03-22 798 * @transfer_mode: DMA transfer mode
e8de370188d098 Alexandre Bounine 2016-03-22 799 * @sync: synchronization mode
e8de370188d098 Alexandre Bounine 2016-03-22 800 * @dir: DMA transfer direction (DMA_MEM_TO_DEV = write OR
e8de370188d098 Alexandre Bounine 2016-03-22 801 * DMA_DEV_TO_MEM = read)
e8de370188d098 Alexandre Bounine 2016-03-22 802 * @xfer: data transfer descriptor structure
e8de370188d098 Alexandre Bounine 2016-03-22 803 */
e8de370188d098 Alexandre Bounine 2016-03-22 804 static int
4e1016dac1ccce Alexandre Bounine 2016-05-05 805 rio_dma_transfer(struct file *filp, u32 transfer_mode,
e8de370188d098 Alexandre Bounine 2016-03-22 806 enum rio_transfer_sync sync, enum dma_data_direction dir,
e8de370188d098 Alexandre Bounine 2016-03-22 807 struct rio_transfer_io *xfer)
e8de370188d098 Alexandre Bounine 2016-03-22 808 {
e8de370188d098 Alexandre Bounine 2016-03-22 809 struct mport_cdev_priv *priv = filp->private_data;
e8de370188d098 Alexandre Bounine 2016-03-22 810 unsigned long nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 811 struct page **page_list = NULL;
e8de370188d098 Alexandre Bounine 2016-03-22 812 struct mport_dma_req *req;
e8de370188d098 Alexandre Bounine 2016-03-22 813 struct mport_dev *md = priv->md;
e8de370188d098 Alexandre Bounine 2016-03-22 814 struct dma_chan *chan;
67446283d89467 John Hubbard 2020-06-04 815 int ret;
e8de370188d098 Alexandre Bounine 2016-03-22 816 int nents;
e8de370188d098 Alexandre Bounine 2016-03-22 817
e8de370188d098 Alexandre Bounine 2016-03-22 818 if (xfer->length == 0)
e8de370188d098 Alexandre Bounine 2016-03-22 819 return -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 820 req = kzalloc(sizeof(*req), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 821 if (!req)
e8de370188d098 Alexandre Bounine 2016-03-22 822 return -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 823
e8de370188d098 Alexandre Bounine 2016-03-22 824 ret = get_dma_channel(priv);
e8de370188d098 Alexandre Bounine 2016-03-22 825 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 826 kfree(req);
e8de370188d098 Alexandre Bounine 2016-03-22 827 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 828 }
c5157b76869ba9 Ioan Nicu 2018-04-20 829 chan = priv->dmach;
c5157b76869ba9 Ioan Nicu 2018-04-20 830
c5157b76869ba9 Ioan Nicu 2018-04-20 831 kref_init(&req->refcount);
c5157b76869ba9 Ioan Nicu 2018-04-20 832 init_completion(&req->req_comp);
c5157b76869ba9 Ioan Nicu 2018-04-20 833 req->dir = dir;
c5157b76869ba9 Ioan Nicu 2018-04-20 834 req->filp = filp;
c5157b76869ba9 Ioan Nicu 2018-04-20 835 req->priv = priv;
c5157b76869ba9 Ioan Nicu 2018-04-20 836 req->dmach = chan;
c5157b76869ba9 Ioan Nicu 2018-04-20 837 req->sync = sync;
e8de370188d098 Alexandre Bounine 2016-03-22 838
e8de370188d098 Alexandre Bounine 2016-03-22 839 /*
e8de370188d098 Alexandre Bounine 2016-03-22 840 * If parameter loc_addr != NULL, we are transferring data from/to
e8de370188d098 Alexandre Bounine 2016-03-22 841 * data buffer allocated in user-space: lock in memory user-space
e8de370188d098 Alexandre Bounine 2016-03-22 842 * buffer pages and build an SG table for DMA transfer request
e8de370188d098 Alexandre Bounine 2016-03-22 843 *
e8de370188d098 Alexandre Bounine 2016-03-22 844 * Otherwise (loc_addr == NULL) contiguous kernel-space buffer is
e8de370188d098 Alexandre Bounine 2016-03-22 845 * used for DMA data transfers: build single entry SG table using
e8de370188d098 Alexandre Bounine 2016-03-22 846 * offset within the internal buffer specified by handle parameter.
e8de370188d098 Alexandre Bounine 2016-03-22 847 */
e8de370188d098 Alexandre Bounine 2016-03-22 848 if (xfer->loc_addr) {
c4860ad6056483 Tvrtko Ursulin 2017-07-31 849 unsigned int offset;
e8de370188d098 Alexandre Bounine 2016-03-22 850 long pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 851
c4860ad6056483 Tvrtko Ursulin 2017-07-31 852 offset = lower_32_bits(offset_in_page(xfer->loc_addr));
e8de370188d098 Alexandre Bounine 2016-03-22 853 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
e8de370188d098 Alexandre Bounine 2016-03-22 854
e8de370188d098 Alexandre Bounine 2016-03-22 855 page_list = kmalloc_array(nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 856 sizeof(*page_list), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 857 if (page_list == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 858 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 859 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 860 }
e8de370188d098 Alexandre Bounine 2016-03-22 861
67446283d89467 John Hubbard 2020-06-04 862 pinned = pin_user_pages_fast(
e8de370188d098 Alexandre Bounine 2016-03-22 863 (unsigned long)xfer->loc_addr & PAGE_MASK,
73b0140bf0fe9d Ira Weiny 2019-05-13 864 nr_pages,
73b0140bf0fe9d Ira Weiny 2019-05-13 865 dir == DMA_FROM_DEVICE ? FOLL_WRITE : 0,
73b0140bf0fe9d Ira Weiny 2019-05-13 866 page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 867
e8de370188d098 Alexandre Bounine 2016-03-22 868 if (pinned != nr_pages) {
e8de370188d098 Alexandre Bounine 2016-03-22 869 if (pinned < 0) {
67446283d89467 John Hubbard 2020-06-04 870 rmcd_error("pin_user_pages_fast err=%ld",
369f2679f7e739 Lorenzo Stoakes 2017-02-27 871 pinned);
e8de370188d098 Alexandre Bounine 2016-03-22 872 nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 873 } else
e8de370188d098 Alexandre Bounine 2016-03-22 874 rmcd_error("pinned %ld out of %ld pages",
e8de370188d098 Alexandre Bounine 2016-03-22 875 pinned, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 876 ret = -EFAULT;
ffca476a0a8d26 John Hubbard 2020-05-22 877 /*
ffca476a0a8d26 John Hubbard 2020-05-22 878 * Set nr_pages up to mean "how many pages to unpin, in
ffca476a0a8d26 John Hubbard 2020-05-22 879 * the error handler:
ffca476a0a8d26 John Hubbard 2020-05-22 880 */
ffca476a0a8d26 John Hubbard 2020-05-22 881 nr_pages = pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 882 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 883 }
e8de370188d098 Alexandre Bounine 2016-03-22 884
e8de370188d098 Alexandre Bounine 2016-03-22 885 ret = sg_alloc_table_from_pages(&req->sgt, page_list, nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 886 offset, xfer->length, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 887 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 888 rmcd_error("sg_alloc_table failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 889 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 890 }
e8de370188d098 Alexandre Bounine 2016-03-22 891
e8de370188d098 Alexandre Bounine 2016-03-22 892 req->page_list = page_list;
e8de370188d098 Alexandre Bounine 2016-03-22 893 req->nr_pages = nr_pages;
e8de370188d098 Alexandre Bounine 2016-03-22 894 } else {
e8de370188d098 Alexandre Bounine 2016-03-22 895 dma_addr_t baddr;
e8de370188d098 Alexandre Bounine 2016-03-22 896 struct rio_mport_mapping *map;
e8de370188d098 Alexandre Bounine 2016-03-22 897
e8de370188d098 Alexandre Bounine 2016-03-22 898 baddr = (dma_addr_t)xfer->handle;
e8de370188d098 Alexandre Bounine 2016-03-22 899
e8de370188d098 Alexandre Bounine 2016-03-22 900 mutex_lock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 901 list_for_each_entry(map, &md->mappings, node) {
e8de370188d098 Alexandre Bounine 2016-03-22 902 if (baddr >= map->phys_addr &&
e8de370188d098 Alexandre Bounine 2016-03-22 903 baddr < (map->phys_addr + map->size)) {
e8de370188d098 Alexandre Bounine 2016-03-22 904 kref_get(&map->ref);
e8de370188d098 Alexandre Bounine 2016-03-22 905 req->map = map;
e8de370188d098 Alexandre Bounine 2016-03-22 906 break;
e8de370188d098 Alexandre Bounine 2016-03-22 907 }
e8de370188d098 Alexandre Bounine 2016-03-22 908 }
e8de370188d098 Alexandre Bounine 2016-03-22 909 mutex_unlock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 910
e8de370188d098 Alexandre Bounine 2016-03-22 911 if (req->map == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 912 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 913 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 914 }
e8de370188d098 Alexandre Bounine 2016-03-22 915
e8de370188d098 Alexandre Bounine 2016-03-22 916 if (xfer->length + xfer->offset > map->size) {
e8de370188d098 Alexandre Bounine 2016-03-22 917 ret = -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 918 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 919 }
e8de370188d098 Alexandre Bounine 2016-03-22 920
e8de370188d098 Alexandre Bounine 2016-03-22 921 ret = sg_alloc_table(&req->sgt, 1, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 922 if (unlikely(ret)) {
e8de370188d098 Alexandre Bounine 2016-03-22 923 rmcd_error("sg_alloc_table failed for internal buf");
e8de370188d098 Alexandre Bounine 2016-03-22 924 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 925 }
e8de370188d098 Alexandre Bounine 2016-03-22 926
e8de370188d098 Alexandre Bounine 2016-03-22 927 sg_set_buf(req->sgt.sgl,
e8de370188d098 Alexandre Bounine 2016-03-22 928 map->virt_addr + (baddr - map->phys_addr) +
e8de370188d098 Alexandre Bounine 2016-03-22 929 xfer->offset, xfer->length);
e8de370188d098 Alexandre Bounine 2016-03-22 930 }
e8de370188d098 Alexandre Bounine 2016-03-22 931
c99597eab54307 Marek Szyprowski 2020-06-19 932 ret = dma_map_sgtable(chan->device->dev, &req->sgt, dir, 0);
c99597eab54307 Marek Szyprowski 2020-06-19 933 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 934 rmcd_error("Failed to map SG list");
b1402dcb5643b7 Christophe JAILLET 2017-11-17 935 ret = -EFAULT;
b1402dcb5643b7 Christophe JAILLET 2017-11-17 936 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 937 }
e8de370188d098 Alexandre Bounine 2016-03-22 938
e8de370188d098 Alexandre Bounine 2016-03-22 @939 ret = do_dma_request(req, xfer, sync, nents);
e8de370188d098 Alexandre Bounine 2016-03-22 940
e8de370188d098 Alexandre Bounine 2016-03-22 941 if (ret >= 0) {
bbd876adb8c729 Ioan Nicu 2018-04-10 942 if (sync == RIO_TRANSFER_ASYNC)
e8de370188d098 Alexandre Bounine 2016-03-22 943 return ret; /* return ASYNC cookie */
bbd876adb8c729 Ioan Nicu 2018-04-10 944 } else {
bbd876adb8c729 Ioan Nicu 2018-04-10 945 rmcd_debug(DMA, "do_dma_request failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 946 }
e8de370188d098 Alexandre Bounine 2016-03-22 947
e8de370188d098 Alexandre Bounine 2016-03-22 948 err_pg:
bbd876adb8c729 Ioan Nicu 2018-04-10 949 if (!req->page_list) {
67446283d89467 John Hubbard 2020-06-04 950 unpin_user_pages(page_list, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 951 kfree(page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 952 }
e8de370188d098 Alexandre Bounine 2016-03-22 953 err_req:
bbd876adb8c729 Ioan Nicu 2018-04-10 954 kref_put(&req->refcount, dma_req_free);
e8de370188d098 Alexandre Bounine 2016-03-22 955 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 956 }
e8de370188d098 Alexandre Bounine 2016-03-22 957
---
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: 36738 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
dri-devel@lists.freedesktop.org,
iommu@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, Alexandre Bounine <alex.bou9@gmail.com>,
David Airlie <airlied@linux.ie>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
clang-built-linux@googlegroups.com,
Matt Porter <mporter@kernel.crashing.org>,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v7 33/36] rapidio: fix common struct sg_table related issues
Date: Sun, 21 Jun 2020 09:23:19 +0800 [thread overview]
Message-ID: <202006210924.l7ZUJ53c%lkp@intel.com> (raw)
In-Reply-To: <20200619103636.11974-34-m.szyprowski@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14328 bytes --]
Hi Marek,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20200618]
[also build test WARNING on v5.8-rc1]
[cannot apply to linuxtv-media/master staging/staging-testing drm-exynos/exynos-drm-next drm-intel/for-linux-next linus/master v5.8-rc1 v5.7 v5.7-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200619-184302
base: ce2cc8efd7a40cbd17841add878cb691d0ce0bba
config: x86_64-randconfig-r005-20200621 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ef455a55bcf2cfea04a99c361b182ad18b7f03f1)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
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 >>, old ones prefixed by <<):
>> drivers/rapidio/devices/rio_mport_cdev.c:939:40: warning: variable 'nents' is uninitialized when used here [-Wuninitialized]
ret = do_dma_request(req, xfer, sync, nents);
^~~~~
drivers/rapidio/devices/rio_mport_cdev.c:816:11: note: initialize the variable 'nents' to silence this warning
int nents;
^
= 0
1 warning generated.
vim +/nents +939 drivers/rapidio/devices/rio_mport_cdev.c
e8de370188d098 Alexandre Bounine 2016-03-22 793
e8de370188d098 Alexandre Bounine 2016-03-22 794 /*
e8de370188d098 Alexandre Bounine 2016-03-22 795 * rio_dma_transfer() - Perform RapidIO DMA data transfer to/from
e8de370188d098 Alexandre Bounine 2016-03-22 796 * the remote RapidIO device
e8de370188d098 Alexandre Bounine 2016-03-22 797 * @filp: file pointer associated with the call
e8de370188d098 Alexandre Bounine 2016-03-22 798 * @transfer_mode: DMA transfer mode
e8de370188d098 Alexandre Bounine 2016-03-22 799 * @sync: synchronization mode
e8de370188d098 Alexandre Bounine 2016-03-22 800 * @dir: DMA transfer direction (DMA_MEM_TO_DEV = write OR
e8de370188d098 Alexandre Bounine 2016-03-22 801 * DMA_DEV_TO_MEM = read)
e8de370188d098 Alexandre Bounine 2016-03-22 802 * @xfer: data transfer descriptor structure
e8de370188d098 Alexandre Bounine 2016-03-22 803 */
e8de370188d098 Alexandre Bounine 2016-03-22 804 static int
4e1016dac1ccce Alexandre Bounine 2016-05-05 805 rio_dma_transfer(struct file *filp, u32 transfer_mode,
e8de370188d098 Alexandre Bounine 2016-03-22 806 enum rio_transfer_sync sync, enum dma_data_direction dir,
e8de370188d098 Alexandre Bounine 2016-03-22 807 struct rio_transfer_io *xfer)
e8de370188d098 Alexandre Bounine 2016-03-22 808 {
e8de370188d098 Alexandre Bounine 2016-03-22 809 struct mport_cdev_priv *priv = filp->private_data;
e8de370188d098 Alexandre Bounine 2016-03-22 810 unsigned long nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 811 struct page **page_list = NULL;
e8de370188d098 Alexandre Bounine 2016-03-22 812 struct mport_dma_req *req;
e8de370188d098 Alexandre Bounine 2016-03-22 813 struct mport_dev *md = priv->md;
e8de370188d098 Alexandre Bounine 2016-03-22 814 struct dma_chan *chan;
67446283d89467 John Hubbard 2020-06-04 815 int ret;
e8de370188d098 Alexandre Bounine 2016-03-22 816 int nents;
e8de370188d098 Alexandre Bounine 2016-03-22 817
e8de370188d098 Alexandre Bounine 2016-03-22 818 if (xfer->length == 0)
e8de370188d098 Alexandre Bounine 2016-03-22 819 return -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 820 req = kzalloc(sizeof(*req), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 821 if (!req)
e8de370188d098 Alexandre Bounine 2016-03-22 822 return -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 823
e8de370188d098 Alexandre Bounine 2016-03-22 824 ret = get_dma_channel(priv);
e8de370188d098 Alexandre Bounine 2016-03-22 825 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 826 kfree(req);
e8de370188d098 Alexandre Bounine 2016-03-22 827 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 828 }
c5157b76869ba9 Ioan Nicu 2018-04-20 829 chan = priv->dmach;
c5157b76869ba9 Ioan Nicu 2018-04-20 830
c5157b76869ba9 Ioan Nicu 2018-04-20 831 kref_init(&req->refcount);
c5157b76869ba9 Ioan Nicu 2018-04-20 832 init_completion(&req->req_comp);
c5157b76869ba9 Ioan Nicu 2018-04-20 833 req->dir = dir;
c5157b76869ba9 Ioan Nicu 2018-04-20 834 req->filp = filp;
c5157b76869ba9 Ioan Nicu 2018-04-20 835 req->priv = priv;
c5157b76869ba9 Ioan Nicu 2018-04-20 836 req->dmach = chan;
c5157b76869ba9 Ioan Nicu 2018-04-20 837 req->sync = sync;
e8de370188d098 Alexandre Bounine 2016-03-22 838
e8de370188d098 Alexandre Bounine 2016-03-22 839 /*
e8de370188d098 Alexandre Bounine 2016-03-22 840 * If parameter loc_addr != NULL, we are transferring data from/to
e8de370188d098 Alexandre Bounine 2016-03-22 841 * data buffer allocated in user-space: lock in memory user-space
e8de370188d098 Alexandre Bounine 2016-03-22 842 * buffer pages and build an SG table for DMA transfer request
e8de370188d098 Alexandre Bounine 2016-03-22 843 *
e8de370188d098 Alexandre Bounine 2016-03-22 844 * Otherwise (loc_addr == NULL) contiguous kernel-space buffer is
e8de370188d098 Alexandre Bounine 2016-03-22 845 * used for DMA data transfers: build single entry SG table using
e8de370188d098 Alexandre Bounine 2016-03-22 846 * offset within the internal buffer specified by handle parameter.
e8de370188d098 Alexandre Bounine 2016-03-22 847 */
e8de370188d098 Alexandre Bounine 2016-03-22 848 if (xfer->loc_addr) {
c4860ad6056483 Tvrtko Ursulin 2017-07-31 849 unsigned int offset;
e8de370188d098 Alexandre Bounine 2016-03-22 850 long pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 851
c4860ad6056483 Tvrtko Ursulin 2017-07-31 852 offset = lower_32_bits(offset_in_page(xfer->loc_addr));
e8de370188d098 Alexandre Bounine 2016-03-22 853 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
e8de370188d098 Alexandre Bounine 2016-03-22 854
e8de370188d098 Alexandre Bounine 2016-03-22 855 page_list = kmalloc_array(nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 856 sizeof(*page_list), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 857 if (page_list == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 858 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 859 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 860 }
e8de370188d098 Alexandre Bounine 2016-03-22 861
67446283d89467 John Hubbard 2020-06-04 862 pinned = pin_user_pages_fast(
e8de370188d098 Alexandre Bounine 2016-03-22 863 (unsigned long)xfer->loc_addr & PAGE_MASK,
73b0140bf0fe9d Ira Weiny 2019-05-13 864 nr_pages,
73b0140bf0fe9d Ira Weiny 2019-05-13 865 dir == DMA_FROM_DEVICE ? FOLL_WRITE : 0,
73b0140bf0fe9d Ira Weiny 2019-05-13 866 page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 867
e8de370188d098 Alexandre Bounine 2016-03-22 868 if (pinned != nr_pages) {
e8de370188d098 Alexandre Bounine 2016-03-22 869 if (pinned < 0) {
67446283d89467 John Hubbard 2020-06-04 870 rmcd_error("pin_user_pages_fast err=%ld",
369f2679f7e739 Lorenzo Stoakes 2017-02-27 871 pinned);
e8de370188d098 Alexandre Bounine 2016-03-22 872 nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 873 } else
e8de370188d098 Alexandre Bounine 2016-03-22 874 rmcd_error("pinned %ld out of %ld pages",
e8de370188d098 Alexandre Bounine 2016-03-22 875 pinned, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 876 ret = -EFAULT;
ffca476a0a8d26 John Hubbard 2020-05-22 877 /*
ffca476a0a8d26 John Hubbard 2020-05-22 878 * Set nr_pages up to mean "how many pages to unpin, in
ffca476a0a8d26 John Hubbard 2020-05-22 879 * the error handler:
ffca476a0a8d26 John Hubbard 2020-05-22 880 */
ffca476a0a8d26 John Hubbard 2020-05-22 881 nr_pages = pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 882 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 883 }
e8de370188d098 Alexandre Bounine 2016-03-22 884
e8de370188d098 Alexandre Bounine 2016-03-22 885 ret = sg_alloc_table_from_pages(&req->sgt, page_list, nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 886 offset, xfer->length, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 887 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 888 rmcd_error("sg_alloc_table failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 889 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 890 }
e8de370188d098 Alexandre Bounine 2016-03-22 891
e8de370188d098 Alexandre Bounine 2016-03-22 892 req->page_list = page_list;
e8de370188d098 Alexandre Bounine 2016-03-22 893 req->nr_pages = nr_pages;
e8de370188d098 Alexandre Bounine 2016-03-22 894 } else {
e8de370188d098 Alexandre Bounine 2016-03-22 895 dma_addr_t baddr;
e8de370188d098 Alexandre Bounine 2016-03-22 896 struct rio_mport_mapping *map;
e8de370188d098 Alexandre Bounine 2016-03-22 897
e8de370188d098 Alexandre Bounine 2016-03-22 898 baddr = (dma_addr_t)xfer->handle;
e8de370188d098 Alexandre Bounine 2016-03-22 899
e8de370188d098 Alexandre Bounine 2016-03-22 900 mutex_lock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 901 list_for_each_entry(map, &md->mappings, node) {
e8de370188d098 Alexandre Bounine 2016-03-22 902 if (baddr >= map->phys_addr &&
e8de370188d098 Alexandre Bounine 2016-03-22 903 baddr < (map->phys_addr + map->size)) {
e8de370188d098 Alexandre Bounine 2016-03-22 904 kref_get(&map->ref);
e8de370188d098 Alexandre Bounine 2016-03-22 905 req->map = map;
e8de370188d098 Alexandre Bounine 2016-03-22 906 break;
e8de370188d098 Alexandre Bounine 2016-03-22 907 }
e8de370188d098 Alexandre Bounine 2016-03-22 908 }
e8de370188d098 Alexandre Bounine 2016-03-22 909 mutex_unlock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 910
e8de370188d098 Alexandre Bounine 2016-03-22 911 if (req->map == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 912 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 913 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 914 }
e8de370188d098 Alexandre Bounine 2016-03-22 915
e8de370188d098 Alexandre Bounine 2016-03-22 916 if (xfer->length + xfer->offset > map->size) {
e8de370188d098 Alexandre Bounine 2016-03-22 917 ret = -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 918 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 919 }
e8de370188d098 Alexandre Bounine 2016-03-22 920
e8de370188d098 Alexandre Bounine 2016-03-22 921 ret = sg_alloc_table(&req->sgt, 1, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 922 if (unlikely(ret)) {
e8de370188d098 Alexandre Bounine 2016-03-22 923 rmcd_error("sg_alloc_table failed for internal buf");
e8de370188d098 Alexandre Bounine 2016-03-22 924 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 925 }
e8de370188d098 Alexandre Bounine 2016-03-22 926
e8de370188d098 Alexandre Bounine 2016-03-22 927 sg_set_buf(req->sgt.sgl,
e8de370188d098 Alexandre Bounine 2016-03-22 928 map->virt_addr + (baddr - map->phys_addr) +
e8de370188d098 Alexandre Bounine 2016-03-22 929 xfer->offset, xfer->length);
e8de370188d098 Alexandre Bounine 2016-03-22 930 }
e8de370188d098 Alexandre Bounine 2016-03-22 931
c99597eab54307 Marek Szyprowski 2020-06-19 932 ret = dma_map_sgtable(chan->device->dev, &req->sgt, dir, 0);
c99597eab54307 Marek Szyprowski 2020-06-19 933 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 934 rmcd_error("Failed to map SG list");
b1402dcb5643b7 Christophe JAILLET 2017-11-17 935 ret = -EFAULT;
b1402dcb5643b7 Christophe JAILLET 2017-11-17 936 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 937 }
e8de370188d098 Alexandre Bounine 2016-03-22 938
e8de370188d098 Alexandre Bounine 2016-03-22 @939 ret = do_dma_request(req, xfer, sync, nents);
e8de370188d098 Alexandre Bounine 2016-03-22 940
e8de370188d098 Alexandre Bounine 2016-03-22 941 if (ret >= 0) {
bbd876adb8c729 Ioan Nicu 2018-04-10 942 if (sync == RIO_TRANSFER_ASYNC)
e8de370188d098 Alexandre Bounine 2016-03-22 943 return ret; /* return ASYNC cookie */
bbd876adb8c729 Ioan Nicu 2018-04-10 944 } else {
bbd876adb8c729 Ioan Nicu 2018-04-10 945 rmcd_debug(DMA, "do_dma_request failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 946 }
e8de370188d098 Alexandre Bounine 2016-03-22 947
e8de370188d098 Alexandre Bounine 2016-03-22 948 err_pg:
bbd876adb8c729 Ioan Nicu 2018-04-10 949 if (!req->page_list) {
67446283d89467 John Hubbard 2020-06-04 950 unpin_user_pages(page_list, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 951 kfree(page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 952 }
e8de370188d098 Alexandre Bounine 2016-03-22 953 err_req:
bbd876adb8c729 Ioan Nicu 2018-04-10 954 kref_put(&req->refcount, dma_req_free);
e8de370188d098 Alexandre Bounine 2016-03-22 955 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 956 }
e8de370188d098 Alexandre Bounine 2016-03-22 957
---
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: 36738 bytes --]
[-- Attachment #3: Type: text/plain, Size: 156 bytes --]
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
dri-devel@lists.freedesktop.org,
iommu@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, Alexandre Bounine <alex.bou9@gmail.com>,
David Airlie <airlied@linux.ie>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
clang-built-linux@googlegroups.com,
Matt Porter <mporter@kernel.crashing.org>,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v7 33/36] rapidio: fix common struct sg_table related issues
Date: Sun, 21 Jun 2020 09:23:19 +0800 [thread overview]
Message-ID: <202006210924.l7ZUJ53c%lkp@intel.com> (raw)
In-Reply-To: <20200619103636.11974-34-m.szyprowski@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14328 bytes --]
Hi Marek,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20200618]
[also build test WARNING on v5.8-rc1]
[cannot apply to linuxtv-media/master staging/staging-testing drm-exynos/exynos-drm-next drm-intel/for-linux-next linus/master v5.8-rc1 v5.7 v5.7-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200619-184302
base: ce2cc8efd7a40cbd17841add878cb691d0ce0bba
config: x86_64-randconfig-r005-20200621 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ef455a55bcf2cfea04a99c361b182ad18b7f03f1)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
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 >>, old ones prefixed by <<):
>> drivers/rapidio/devices/rio_mport_cdev.c:939:40: warning: variable 'nents' is uninitialized when used here [-Wuninitialized]
ret = do_dma_request(req, xfer, sync, nents);
^~~~~
drivers/rapidio/devices/rio_mport_cdev.c:816:11: note: initialize the variable 'nents' to silence this warning
int nents;
^
= 0
1 warning generated.
vim +/nents +939 drivers/rapidio/devices/rio_mport_cdev.c
e8de370188d098 Alexandre Bounine 2016-03-22 793
e8de370188d098 Alexandre Bounine 2016-03-22 794 /*
e8de370188d098 Alexandre Bounine 2016-03-22 795 * rio_dma_transfer() - Perform RapidIO DMA data transfer to/from
e8de370188d098 Alexandre Bounine 2016-03-22 796 * the remote RapidIO device
e8de370188d098 Alexandre Bounine 2016-03-22 797 * @filp: file pointer associated with the call
e8de370188d098 Alexandre Bounine 2016-03-22 798 * @transfer_mode: DMA transfer mode
e8de370188d098 Alexandre Bounine 2016-03-22 799 * @sync: synchronization mode
e8de370188d098 Alexandre Bounine 2016-03-22 800 * @dir: DMA transfer direction (DMA_MEM_TO_DEV = write OR
e8de370188d098 Alexandre Bounine 2016-03-22 801 * DMA_DEV_TO_MEM = read)
e8de370188d098 Alexandre Bounine 2016-03-22 802 * @xfer: data transfer descriptor structure
e8de370188d098 Alexandre Bounine 2016-03-22 803 */
e8de370188d098 Alexandre Bounine 2016-03-22 804 static int
4e1016dac1ccce Alexandre Bounine 2016-05-05 805 rio_dma_transfer(struct file *filp, u32 transfer_mode,
e8de370188d098 Alexandre Bounine 2016-03-22 806 enum rio_transfer_sync sync, enum dma_data_direction dir,
e8de370188d098 Alexandre Bounine 2016-03-22 807 struct rio_transfer_io *xfer)
e8de370188d098 Alexandre Bounine 2016-03-22 808 {
e8de370188d098 Alexandre Bounine 2016-03-22 809 struct mport_cdev_priv *priv = filp->private_data;
e8de370188d098 Alexandre Bounine 2016-03-22 810 unsigned long nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 811 struct page **page_list = NULL;
e8de370188d098 Alexandre Bounine 2016-03-22 812 struct mport_dma_req *req;
e8de370188d098 Alexandre Bounine 2016-03-22 813 struct mport_dev *md = priv->md;
e8de370188d098 Alexandre Bounine 2016-03-22 814 struct dma_chan *chan;
67446283d89467 John Hubbard 2020-06-04 815 int ret;
e8de370188d098 Alexandre Bounine 2016-03-22 816 int nents;
e8de370188d098 Alexandre Bounine 2016-03-22 817
e8de370188d098 Alexandre Bounine 2016-03-22 818 if (xfer->length == 0)
e8de370188d098 Alexandre Bounine 2016-03-22 819 return -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 820 req = kzalloc(sizeof(*req), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 821 if (!req)
e8de370188d098 Alexandre Bounine 2016-03-22 822 return -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 823
e8de370188d098 Alexandre Bounine 2016-03-22 824 ret = get_dma_channel(priv);
e8de370188d098 Alexandre Bounine 2016-03-22 825 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 826 kfree(req);
e8de370188d098 Alexandre Bounine 2016-03-22 827 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 828 }
c5157b76869ba9 Ioan Nicu 2018-04-20 829 chan = priv->dmach;
c5157b76869ba9 Ioan Nicu 2018-04-20 830
c5157b76869ba9 Ioan Nicu 2018-04-20 831 kref_init(&req->refcount);
c5157b76869ba9 Ioan Nicu 2018-04-20 832 init_completion(&req->req_comp);
c5157b76869ba9 Ioan Nicu 2018-04-20 833 req->dir = dir;
c5157b76869ba9 Ioan Nicu 2018-04-20 834 req->filp = filp;
c5157b76869ba9 Ioan Nicu 2018-04-20 835 req->priv = priv;
c5157b76869ba9 Ioan Nicu 2018-04-20 836 req->dmach = chan;
c5157b76869ba9 Ioan Nicu 2018-04-20 837 req->sync = sync;
e8de370188d098 Alexandre Bounine 2016-03-22 838
e8de370188d098 Alexandre Bounine 2016-03-22 839 /*
e8de370188d098 Alexandre Bounine 2016-03-22 840 * If parameter loc_addr != NULL, we are transferring data from/to
e8de370188d098 Alexandre Bounine 2016-03-22 841 * data buffer allocated in user-space: lock in memory user-space
e8de370188d098 Alexandre Bounine 2016-03-22 842 * buffer pages and build an SG table for DMA transfer request
e8de370188d098 Alexandre Bounine 2016-03-22 843 *
e8de370188d098 Alexandre Bounine 2016-03-22 844 * Otherwise (loc_addr == NULL) contiguous kernel-space buffer is
e8de370188d098 Alexandre Bounine 2016-03-22 845 * used for DMA data transfers: build single entry SG table using
e8de370188d098 Alexandre Bounine 2016-03-22 846 * offset within the internal buffer specified by handle parameter.
e8de370188d098 Alexandre Bounine 2016-03-22 847 */
e8de370188d098 Alexandre Bounine 2016-03-22 848 if (xfer->loc_addr) {
c4860ad6056483 Tvrtko Ursulin 2017-07-31 849 unsigned int offset;
e8de370188d098 Alexandre Bounine 2016-03-22 850 long pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 851
c4860ad6056483 Tvrtko Ursulin 2017-07-31 852 offset = lower_32_bits(offset_in_page(xfer->loc_addr));
e8de370188d098 Alexandre Bounine 2016-03-22 853 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
e8de370188d098 Alexandre Bounine 2016-03-22 854
e8de370188d098 Alexandre Bounine 2016-03-22 855 page_list = kmalloc_array(nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 856 sizeof(*page_list), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 857 if (page_list == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 858 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 859 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 860 }
e8de370188d098 Alexandre Bounine 2016-03-22 861
67446283d89467 John Hubbard 2020-06-04 862 pinned = pin_user_pages_fast(
e8de370188d098 Alexandre Bounine 2016-03-22 863 (unsigned long)xfer->loc_addr & PAGE_MASK,
73b0140bf0fe9d Ira Weiny 2019-05-13 864 nr_pages,
73b0140bf0fe9d Ira Weiny 2019-05-13 865 dir == DMA_FROM_DEVICE ? FOLL_WRITE : 0,
73b0140bf0fe9d Ira Weiny 2019-05-13 866 page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 867
e8de370188d098 Alexandre Bounine 2016-03-22 868 if (pinned != nr_pages) {
e8de370188d098 Alexandre Bounine 2016-03-22 869 if (pinned < 0) {
67446283d89467 John Hubbard 2020-06-04 870 rmcd_error("pin_user_pages_fast err=%ld",
369f2679f7e739 Lorenzo Stoakes 2017-02-27 871 pinned);
e8de370188d098 Alexandre Bounine 2016-03-22 872 nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 873 } else
e8de370188d098 Alexandre Bounine 2016-03-22 874 rmcd_error("pinned %ld out of %ld pages",
e8de370188d098 Alexandre Bounine 2016-03-22 875 pinned, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 876 ret = -EFAULT;
ffca476a0a8d26 John Hubbard 2020-05-22 877 /*
ffca476a0a8d26 John Hubbard 2020-05-22 878 * Set nr_pages up to mean "how many pages to unpin, in
ffca476a0a8d26 John Hubbard 2020-05-22 879 * the error handler:
ffca476a0a8d26 John Hubbard 2020-05-22 880 */
ffca476a0a8d26 John Hubbard 2020-05-22 881 nr_pages = pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 882 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 883 }
e8de370188d098 Alexandre Bounine 2016-03-22 884
e8de370188d098 Alexandre Bounine 2016-03-22 885 ret = sg_alloc_table_from_pages(&req->sgt, page_list, nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 886 offset, xfer->length, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 887 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 888 rmcd_error("sg_alloc_table failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 889 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 890 }
e8de370188d098 Alexandre Bounine 2016-03-22 891
e8de370188d098 Alexandre Bounine 2016-03-22 892 req->page_list = page_list;
e8de370188d098 Alexandre Bounine 2016-03-22 893 req->nr_pages = nr_pages;
e8de370188d098 Alexandre Bounine 2016-03-22 894 } else {
e8de370188d098 Alexandre Bounine 2016-03-22 895 dma_addr_t baddr;
e8de370188d098 Alexandre Bounine 2016-03-22 896 struct rio_mport_mapping *map;
e8de370188d098 Alexandre Bounine 2016-03-22 897
e8de370188d098 Alexandre Bounine 2016-03-22 898 baddr = (dma_addr_t)xfer->handle;
e8de370188d098 Alexandre Bounine 2016-03-22 899
e8de370188d098 Alexandre Bounine 2016-03-22 900 mutex_lock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 901 list_for_each_entry(map, &md->mappings, node) {
e8de370188d098 Alexandre Bounine 2016-03-22 902 if (baddr >= map->phys_addr &&
e8de370188d098 Alexandre Bounine 2016-03-22 903 baddr < (map->phys_addr + map->size)) {
e8de370188d098 Alexandre Bounine 2016-03-22 904 kref_get(&map->ref);
e8de370188d098 Alexandre Bounine 2016-03-22 905 req->map = map;
e8de370188d098 Alexandre Bounine 2016-03-22 906 break;
e8de370188d098 Alexandre Bounine 2016-03-22 907 }
e8de370188d098 Alexandre Bounine 2016-03-22 908 }
e8de370188d098 Alexandre Bounine 2016-03-22 909 mutex_unlock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 910
e8de370188d098 Alexandre Bounine 2016-03-22 911 if (req->map == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 912 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 913 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 914 }
e8de370188d098 Alexandre Bounine 2016-03-22 915
e8de370188d098 Alexandre Bounine 2016-03-22 916 if (xfer->length + xfer->offset > map->size) {
e8de370188d098 Alexandre Bounine 2016-03-22 917 ret = -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 918 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 919 }
e8de370188d098 Alexandre Bounine 2016-03-22 920
e8de370188d098 Alexandre Bounine 2016-03-22 921 ret = sg_alloc_table(&req->sgt, 1, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 922 if (unlikely(ret)) {
e8de370188d098 Alexandre Bounine 2016-03-22 923 rmcd_error("sg_alloc_table failed for internal buf");
e8de370188d098 Alexandre Bounine 2016-03-22 924 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 925 }
e8de370188d098 Alexandre Bounine 2016-03-22 926
e8de370188d098 Alexandre Bounine 2016-03-22 927 sg_set_buf(req->sgt.sgl,
e8de370188d098 Alexandre Bounine 2016-03-22 928 map->virt_addr + (baddr - map->phys_addr) +
e8de370188d098 Alexandre Bounine 2016-03-22 929 xfer->offset, xfer->length);
e8de370188d098 Alexandre Bounine 2016-03-22 930 }
e8de370188d098 Alexandre Bounine 2016-03-22 931
c99597eab54307 Marek Szyprowski 2020-06-19 932 ret = dma_map_sgtable(chan->device->dev, &req->sgt, dir, 0);
c99597eab54307 Marek Szyprowski 2020-06-19 933 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 934 rmcd_error("Failed to map SG list");
b1402dcb5643b7 Christophe JAILLET 2017-11-17 935 ret = -EFAULT;
b1402dcb5643b7 Christophe JAILLET 2017-11-17 936 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 937 }
e8de370188d098 Alexandre Bounine 2016-03-22 938
e8de370188d098 Alexandre Bounine 2016-03-22 @939 ret = do_dma_request(req, xfer, sync, nents);
e8de370188d098 Alexandre Bounine 2016-03-22 940
e8de370188d098 Alexandre Bounine 2016-03-22 941 if (ret >= 0) {
bbd876adb8c729 Ioan Nicu 2018-04-10 942 if (sync == RIO_TRANSFER_ASYNC)
e8de370188d098 Alexandre Bounine 2016-03-22 943 return ret; /* return ASYNC cookie */
bbd876adb8c729 Ioan Nicu 2018-04-10 944 } else {
bbd876adb8c729 Ioan Nicu 2018-04-10 945 rmcd_debug(DMA, "do_dma_request failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 946 }
e8de370188d098 Alexandre Bounine 2016-03-22 947
e8de370188d098 Alexandre Bounine 2016-03-22 948 err_pg:
bbd876adb8c729 Ioan Nicu 2018-04-10 949 if (!req->page_list) {
67446283d89467 John Hubbard 2020-06-04 950 unpin_user_pages(page_list, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 951 kfree(page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 952 }
e8de370188d098 Alexandre Bounine 2016-03-22 953 err_req:
bbd876adb8c729 Ioan Nicu 2018-04-10 954 kref_put(&req->refcount, dma_req_free);
e8de370188d098 Alexandre Bounine 2016-03-22 955 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 956 }
e8de370188d098 Alexandre Bounine 2016-03-22 957
---
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: 36738 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v7 33/36] rapidio: fix common struct sg_table related issues
Date: Sun, 21 Jun 2020 09:23:19 +0800 [thread overview]
Message-ID: <202006210924.l7ZUJ53c%lkp@intel.com> (raw)
In-Reply-To: <20200619103636.11974-34-m.szyprowski@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14538 bytes --]
Hi Marek,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20200618]
[also build test WARNING on v5.8-rc1]
[cannot apply to linuxtv-media/master staging/staging-testing drm-exynos/exynos-drm-next drm-intel/for-linux-next linus/master v5.8-rc1 v5.7 v5.7-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200619-184302
base: ce2cc8efd7a40cbd17841add878cb691d0ce0bba
config: x86_64-randconfig-r005-20200621 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ef455a55bcf2cfea04a99c361b182ad18b7f03f1)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
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 >>, old ones prefixed by <<):
>> drivers/rapidio/devices/rio_mport_cdev.c:939:40: warning: variable 'nents' is uninitialized when used here [-Wuninitialized]
ret = do_dma_request(req, xfer, sync, nents);
^~~~~
drivers/rapidio/devices/rio_mport_cdev.c:816:11: note: initialize the variable 'nents' to silence this warning
int nents;
^
= 0
1 warning generated.
vim +/nents +939 drivers/rapidio/devices/rio_mport_cdev.c
e8de370188d098 Alexandre Bounine 2016-03-22 793
e8de370188d098 Alexandre Bounine 2016-03-22 794 /*
e8de370188d098 Alexandre Bounine 2016-03-22 795 * rio_dma_transfer() - Perform RapidIO DMA data transfer to/from
e8de370188d098 Alexandre Bounine 2016-03-22 796 * the remote RapidIO device
e8de370188d098 Alexandre Bounine 2016-03-22 797 * @filp: file pointer associated with the call
e8de370188d098 Alexandre Bounine 2016-03-22 798 * @transfer_mode: DMA transfer mode
e8de370188d098 Alexandre Bounine 2016-03-22 799 * @sync: synchronization mode
e8de370188d098 Alexandre Bounine 2016-03-22 800 * @dir: DMA transfer direction (DMA_MEM_TO_DEV = write OR
e8de370188d098 Alexandre Bounine 2016-03-22 801 * DMA_DEV_TO_MEM = read)
e8de370188d098 Alexandre Bounine 2016-03-22 802 * @xfer: data transfer descriptor structure
e8de370188d098 Alexandre Bounine 2016-03-22 803 */
e8de370188d098 Alexandre Bounine 2016-03-22 804 static int
4e1016dac1ccce Alexandre Bounine 2016-05-05 805 rio_dma_transfer(struct file *filp, u32 transfer_mode,
e8de370188d098 Alexandre Bounine 2016-03-22 806 enum rio_transfer_sync sync, enum dma_data_direction dir,
e8de370188d098 Alexandre Bounine 2016-03-22 807 struct rio_transfer_io *xfer)
e8de370188d098 Alexandre Bounine 2016-03-22 808 {
e8de370188d098 Alexandre Bounine 2016-03-22 809 struct mport_cdev_priv *priv = filp->private_data;
e8de370188d098 Alexandre Bounine 2016-03-22 810 unsigned long nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 811 struct page **page_list = NULL;
e8de370188d098 Alexandre Bounine 2016-03-22 812 struct mport_dma_req *req;
e8de370188d098 Alexandre Bounine 2016-03-22 813 struct mport_dev *md = priv->md;
e8de370188d098 Alexandre Bounine 2016-03-22 814 struct dma_chan *chan;
67446283d89467 John Hubbard 2020-06-04 815 int ret;
e8de370188d098 Alexandre Bounine 2016-03-22 816 int nents;
e8de370188d098 Alexandre Bounine 2016-03-22 817
e8de370188d098 Alexandre Bounine 2016-03-22 818 if (xfer->length == 0)
e8de370188d098 Alexandre Bounine 2016-03-22 819 return -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 820 req = kzalloc(sizeof(*req), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 821 if (!req)
e8de370188d098 Alexandre Bounine 2016-03-22 822 return -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 823
e8de370188d098 Alexandre Bounine 2016-03-22 824 ret = get_dma_channel(priv);
e8de370188d098 Alexandre Bounine 2016-03-22 825 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 826 kfree(req);
e8de370188d098 Alexandre Bounine 2016-03-22 827 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 828 }
c5157b76869ba9 Ioan Nicu 2018-04-20 829 chan = priv->dmach;
c5157b76869ba9 Ioan Nicu 2018-04-20 830
c5157b76869ba9 Ioan Nicu 2018-04-20 831 kref_init(&req->refcount);
c5157b76869ba9 Ioan Nicu 2018-04-20 832 init_completion(&req->req_comp);
c5157b76869ba9 Ioan Nicu 2018-04-20 833 req->dir = dir;
c5157b76869ba9 Ioan Nicu 2018-04-20 834 req->filp = filp;
c5157b76869ba9 Ioan Nicu 2018-04-20 835 req->priv = priv;
c5157b76869ba9 Ioan Nicu 2018-04-20 836 req->dmach = chan;
c5157b76869ba9 Ioan Nicu 2018-04-20 837 req->sync = sync;
e8de370188d098 Alexandre Bounine 2016-03-22 838
e8de370188d098 Alexandre Bounine 2016-03-22 839 /*
e8de370188d098 Alexandre Bounine 2016-03-22 840 * If parameter loc_addr != NULL, we are transferring data from/to
e8de370188d098 Alexandre Bounine 2016-03-22 841 * data buffer allocated in user-space: lock in memory user-space
e8de370188d098 Alexandre Bounine 2016-03-22 842 * buffer pages and build an SG table for DMA transfer request
e8de370188d098 Alexandre Bounine 2016-03-22 843 *
e8de370188d098 Alexandre Bounine 2016-03-22 844 * Otherwise (loc_addr == NULL) contiguous kernel-space buffer is
e8de370188d098 Alexandre Bounine 2016-03-22 845 * used for DMA data transfers: build single entry SG table using
e8de370188d098 Alexandre Bounine 2016-03-22 846 * offset within the internal buffer specified by handle parameter.
e8de370188d098 Alexandre Bounine 2016-03-22 847 */
e8de370188d098 Alexandre Bounine 2016-03-22 848 if (xfer->loc_addr) {
c4860ad6056483 Tvrtko Ursulin 2017-07-31 849 unsigned int offset;
e8de370188d098 Alexandre Bounine 2016-03-22 850 long pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 851
c4860ad6056483 Tvrtko Ursulin 2017-07-31 852 offset = lower_32_bits(offset_in_page(xfer->loc_addr));
e8de370188d098 Alexandre Bounine 2016-03-22 853 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
e8de370188d098 Alexandre Bounine 2016-03-22 854
e8de370188d098 Alexandre Bounine 2016-03-22 855 page_list = kmalloc_array(nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 856 sizeof(*page_list), GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 857 if (page_list == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 858 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 859 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 860 }
e8de370188d098 Alexandre Bounine 2016-03-22 861
67446283d89467 John Hubbard 2020-06-04 862 pinned = pin_user_pages_fast(
e8de370188d098 Alexandre Bounine 2016-03-22 863 (unsigned long)xfer->loc_addr & PAGE_MASK,
73b0140bf0fe9d Ira Weiny 2019-05-13 864 nr_pages,
73b0140bf0fe9d Ira Weiny 2019-05-13 865 dir == DMA_FROM_DEVICE ? FOLL_WRITE : 0,
73b0140bf0fe9d Ira Weiny 2019-05-13 866 page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 867
e8de370188d098 Alexandre Bounine 2016-03-22 868 if (pinned != nr_pages) {
e8de370188d098 Alexandre Bounine 2016-03-22 869 if (pinned < 0) {
67446283d89467 John Hubbard 2020-06-04 870 rmcd_error("pin_user_pages_fast err=%ld",
369f2679f7e739 Lorenzo Stoakes 2017-02-27 871 pinned);
e8de370188d098 Alexandre Bounine 2016-03-22 872 nr_pages = 0;
e8de370188d098 Alexandre Bounine 2016-03-22 873 } else
e8de370188d098 Alexandre Bounine 2016-03-22 874 rmcd_error("pinned %ld out of %ld pages",
e8de370188d098 Alexandre Bounine 2016-03-22 875 pinned, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 876 ret = -EFAULT;
ffca476a0a8d26 John Hubbard 2020-05-22 877 /*
ffca476a0a8d26 John Hubbard 2020-05-22 878 * Set nr_pages up to mean "how many pages to unpin, in
ffca476a0a8d26 John Hubbard 2020-05-22 879 * the error handler:
ffca476a0a8d26 John Hubbard 2020-05-22 880 */
ffca476a0a8d26 John Hubbard 2020-05-22 881 nr_pages = pinned;
e8de370188d098 Alexandre Bounine 2016-03-22 882 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 883 }
e8de370188d098 Alexandre Bounine 2016-03-22 884
e8de370188d098 Alexandre Bounine 2016-03-22 885 ret = sg_alloc_table_from_pages(&req->sgt, page_list, nr_pages,
e8de370188d098 Alexandre Bounine 2016-03-22 886 offset, xfer->length, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 887 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 888 rmcd_error("sg_alloc_table failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 889 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 890 }
e8de370188d098 Alexandre Bounine 2016-03-22 891
e8de370188d098 Alexandre Bounine 2016-03-22 892 req->page_list = page_list;
e8de370188d098 Alexandre Bounine 2016-03-22 893 req->nr_pages = nr_pages;
e8de370188d098 Alexandre Bounine 2016-03-22 894 } else {
e8de370188d098 Alexandre Bounine 2016-03-22 895 dma_addr_t baddr;
e8de370188d098 Alexandre Bounine 2016-03-22 896 struct rio_mport_mapping *map;
e8de370188d098 Alexandre Bounine 2016-03-22 897
e8de370188d098 Alexandre Bounine 2016-03-22 898 baddr = (dma_addr_t)xfer->handle;
e8de370188d098 Alexandre Bounine 2016-03-22 899
e8de370188d098 Alexandre Bounine 2016-03-22 900 mutex_lock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 901 list_for_each_entry(map, &md->mappings, node) {
e8de370188d098 Alexandre Bounine 2016-03-22 902 if (baddr >= map->phys_addr &&
e8de370188d098 Alexandre Bounine 2016-03-22 903 baddr < (map->phys_addr + map->size)) {
e8de370188d098 Alexandre Bounine 2016-03-22 904 kref_get(&map->ref);
e8de370188d098 Alexandre Bounine 2016-03-22 905 req->map = map;
e8de370188d098 Alexandre Bounine 2016-03-22 906 break;
e8de370188d098 Alexandre Bounine 2016-03-22 907 }
e8de370188d098 Alexandre Bounine 2016-03-22 908 }
e8de370188d098 Alexandre Bounine 2016-03-22 909 mutex_unlock(&md->buf_mutex);
e8de370188d098 Alexandre Bounine 2016-03-22 910
e8de370188d098 Alexandre Bounine 2016-03-22 911 if (req->map == NULL) {
e8de370188d098 Alexandre Bounine 2016-03-22 912 ret = -ENOMEM;
e8de370188d098 Alexandre Bounine 2016-03-22 913 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 914 }
e8de370188d098 Alexandre Bounine 2016-03-22 915
e8de370188d098 Alexandre Bounine 2016-03-22 916 if (xfer->length + xfer->offset > map->size) {
e8de370188d098 Alexandre Bounine 2016-03-22 917 ret = -EINVAL;
e8de370188d098 Alexandre Bounine 2016-03-22 918 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 919 }
e8de370188d098 Alexandre Bounine 2016-03-22 920
e8de370188d098 Alexandre Bounine 2016-03-22 921 ret = sg_alloc_table(&req->sgt, 1, GFP_KERNEL);
e8de370188d098 Alexandre Bounine 2016-03-22 922 if (unlikely(ret)) {
e8de370188d098 Alexandre Bounine 2016-03-22 923 rmcd_error("sg_alloc_table failed for internal buf");
e8de370188d098 Alexandre Bounine 2016-03-22 924 goto err_req;
e8de370188d098 Alexandre Bounine 2016-03-22 925 }
e8de370188d098 Alexandre Bounine 2016-03-22 926
e8de370188d098 Alexandre Bounine 2016-03-22 927 sg_set_buf(req->sgt.sgl,
e8de370188d098 Alexandre Bounine 2016-03-22 928 map->virt_addr + (baddr - map->phys_addr) +
e8de370188d098 Alexandre Bounine 2016-03-22 929 xfer->offset, xfer->length);
e8de370188d098 Alexandre Bounine 2016-03-22 930 }
e8de370188d098 Alexandre Bounine 2016-03-22 931
c99597eab54307 Marek Szyprowski 2020-06-19 932 ret = dma_map_sgtable(chan->device->dev, &req->sgt, dir, 0);
c99597eab54307 Marek Szyprowski 2020-06-19 933 if (ret) {
e8de370188d098 Alexandre Bounine 2016-03-22 934 rmcd_error("Failed to map SG list");
b1402dcb5643b7 Christophe JAILLET 2017-11-17 935 ret = -EFAULT;
b1402dcb5643b7 Christophe JAILLET 2017-11-17 936 goto err_pg;
e8de370188d098 Alexandre Bounine 2016-03-22 937 }
e8de370188d098 Alexandre Bounine 2016-03-22 938
e8de370188d098 Alexandre Bounine 2016-03-22 @939 ret = do_dma_request(req, xfer, sync, nents);
e8de370188d098 Alexandre Bounine 2016-03-22 940
e8de370188d098 Alexandre Bounine 2016-03-22 941 if (ret >= 0) {
bbd876adb8c729 Ioan Nicu 2018-04-10 942 if (sync == RIO_TRANSFER_ASYNC)
e8de370188d098 Alexandre Bounine 2016-03-22 943 return ret; /* return ASYNC cookie */
bbd876adb8c729 Ioan Nicu 2018-04-10 944 } else {
bbd876adb8c729 Ioan Nicu 2018-04-10 945 rmcd_debug(DMA, "do_dma_request failed with err=%d", ret);
e8de370188d098 Alexandre Bounine 2016-03-22 946 }
e8de370188d098 Alexandre Bounine 2016-03-22 947
e8de370188d098 Alexandre Bounine 2016-03-22 948 err_pg:
bbd876adb8c729 Ioan Nicu 2018-04-10 949 if (!req->page_list) {
67446283d89467 John Hubbard 2020-06-04 950 unpin_user_pages(page_list, nr_pages);
e8de370188d098 Alexandre Bounine 2016-03-22 951 kfree(page_list);
e8de370188d098 Alexandre Bounine 2016-03-22 952 }
e8de370188d098 Alexandre Bounine 2016-03-22 953 err_req:
bbd876adb8c729 Ioan Nicu 2018-04-10 954 kref_put(&req->refcount, dma_req_free);
e8de370188d098 Alexandre Bounine 2016-03-22 955 return ret;
e8de370188d098 Alexandre Bounine 2016-03-22 956 }
e8de370188d098 Alexandre Bounine 2016-03-22 957
---
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: 36738 bytes --]
next prev parent reply other threads:[~2020-06-21 1:38 UTC|newest]
Thread overview: 266+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200619103652eucas1p203d684adff0faa672ff5c8d383b52f23@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 00/36] DRM: fix struct sg_table nents vs. orig_nents misuse Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103653eucas1p2542a7f42db61b22a43919666368dbbfa@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 01/36] drm: prime: add common helper to check scatterlist contiguity Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 14:30 ` Andrzej Hajda
2020-07-07 14:30 ` Andrzej Hajda
2020-07-07 14:30 ` Andrzej Hajda
2020-07-07 14:30 ` Andrzej Hajda
2020-07-07 15:03 ` Andrzej Hajda
2020-07-07 15:03 ` Andrzej Hajda
2020-07-07 15:03 ` Andrzej Hajda
2020-07-07 15:03 ` Andrzej Hajda
[not found] ` <CGME20200619103654eucas1p227a1d6926d008ef21ba4e0b68a8de210@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 02/36] drm: prime: use sgtable iterators in drm_prime_sg_to_page_addr_arrays() Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 14:41 ` Andrzej Hajda
2020-07-07 14:41 ` Andrzej Hajda
2020-07-07 14:41 ` Andrzej Hajda
2020-07-07 14:41 ` Andrzej Hajda
[not found] ` <CGME20200619103655eucas1p1b01cbe67526e2b2f8254eb20ccac1858@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 03/36] drm: core: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 15:02 ` Andrzej Hajda
2020-07-07 15:02 ` Andrzej Hajda
2020-07-07 15:02 ` Andrzej Hajda
2020-07-07 15:02 ` Andrzej Hajda
[not found] ` <CGME20200619103655eucas1p28ea4bf59428550217c8962666d6f077b@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 04/36] drm: amdgpu: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-22 13:27 ` Christian König
2020-06-22 13:27 ` Christian König
2020-06-22 13:27 ` Christian König
2020-06-22 13:27 ` Christian König
2020-07-07 13:06 ` Marek Szyprowski
2020-07-07 13:06 ` Marek Szyprowski
2020-07-07 13:06 ` Marek Szyprowski
2020-07-07 13:06 ` Marek Szyprowski
2020-07-07 13:06 ` Marek Szyprowski
[not found] ` <CGME20200619103656eucas1p262a08b701244745a547a0c38f26f83af@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 05/36] drm: armada: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103657eucas1p2b7cec8f7b477c9574e2594ad6644a780@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 06/36] drm: etnaviv: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103657eucas1p24bff92408adbd4715130fb47595a6187@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 07/36] drm: exynos: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 9:35 ` Andrzej Hajda
2020-07-07 9:35 ` Andrzej Hajda
2020-07-07 9:35 ` Andrzej Hajda
2020-07-07 9:35 ` Andrzej Hajda
2020-07-07 15:04 ` Andrzej Hajda
2020-07-07 15:04 ` Andrzej Hajda
2020-07-07 15:04 ` Andrzej Hajda
2020-07-07 15:04 ` Andrzej Hajda
2020-07-14 0:28 ` Inki Dae
2020-07-14 0:28 ` Inki Dae
2020-07-14 0:28 ` Inki Dae
2020-07-14 0:28 ` Inki Dae
[not found] ` <CGME20200619103658eucas1p1c3236e2de2798c2d8c02279a9263e9a9@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 08/36] drm: exynos: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 9:40 ` Andrzej Hajda
2020-07-07 9:40 ` Andrzej Hajda
2020-07-07 9:40 ` Andrzej Hajda
2020-07-07 9:40 ` Andrzej Hajda
2020-07-07 15:05 ` Andrzej Hajda
2020-07-07 15:05 ` Andrzej Hajda
2020-07-07 15:05 ` Andrzej Hajda
2020-07-07 15:05 ` Andrzej Hajda
2020-07-14 0:27 ` Inki Dae
2020-07-14 0:27 ` Inki Dae
2020-07-14 0:27 ` Inki Dae
2020-07-14 0:27 ` Inki Dae
[not found] ` <CGME20200619103659eucas1p27ece9865ea4cdd82d4ca4df06edef7e6@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 09/36] drm: i915: " Marek Szyprowski
2020-06-19 10:36 ` [Intel-gfx] " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-07-07 13:15 ` [Intel-gfx] " Marek Szyprowski
[not found] ` <CGME20200619103659eucas1p15d57f701ea85df16e953bfd5098423f6@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 10/36] drm: lima: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103700eucas1p13747c6a4d1a89f3cfc94a585ada9be4b@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 11/36] drm: mediatek: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103701eucas1p2323797b812f4d8c28e851aa80938a8dc@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 12/36] drm: mediatek: use common helper for extracting pages array Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103702eucas1p1c57147013bbac3968f6ba073caec68b5@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 13/36] drm: msm: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 14:45 ` Rob Clark
2020-06-19 14:45 ` Rob Clark
2020-06-19 14:45 ` Rob Clark
2020-06-19 14:45 ` Rob Clark
[not found] ` <CGME20200619103702eucas1p207b9cacc7460a334a0eda58c2b60a965@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 14/36] drm: omapdrm: use common helper for extracting pages array Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103703eucas1p14faa1cec371efb0bf98ae696d58da64d@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 15/36] drm: omapdrm: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103703eucas1p2b8b0e90f9559c3fff12d61f76b861cc1@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 16/36] drm: panfrost: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103704eucas1p1bf233e8914507323499186d9ab742c09@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 17/36] drm: radeon: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103705eucas1p2d81a91b989d5aed5c7da6897173905cd@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 18/36] drm: rockchip: use common helper for a scatterlist contiguity check Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103706eucas1p24f226bc00559f0812bc44d7933acd1e4@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 19/36] drm: rockchip: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103707eucas1p1cdb34a10d5657bdd62fdf51fb7bf0146@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 21/36] drm: v3d: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103708eucas1p2207ebc9373b820797675b91060a2a597@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 22/36] drm: virtio: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103708eucas1p230ca99e915e759bc0e93cd844c91b311@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 23/36] drm: vmwgfx: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103709eucas1p12c32fa6377caf78e5dc28ce0ff51e7a0@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 24/36] drm: xen: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103710eucas1p1873c8ebb37e6717a5864c31d10b50efd@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 25/36] xen: gntdev: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103706eucas1p2b9a9926941e812db1111ec46a97695cd@eucas1p2.samsung.com>
[not found] ` <20200619103636.11974-1-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2020-06-19 10:36 ` [PATCH v7 20/36] drm: tegra: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` [PATCH v7 26/36] drm: host1x: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <20200619103636.11974-27-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2020-06-21 14:47 ` kernel test robot
2020-06-21 14:47 ` kernel test robot
2020-06-21 14:47 ` kernel test robot
2020-06-21 14:47 ` kernel test robot
2020-06-21 14:47 ` kernel test robot
2020-06-19 10:36 ` [PATCH v7 31/36] staging: tegra-vde: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-20 21:10 ` kernel test robot
2020-06-20 21:10 ` kernel test robot
2020-06-20 21:10 ` kernel test robot
2020-06-20 21:10 ` kernel test robot
2020-06-20 21:10 ` kernel test robot
[not found] ` <20200619103636.11974-32-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2020-06-21 4:00 ` Dmitry Osipenko
2020-06-21 4:00 ` Dmitry Osipenko
2020-06-21 4:00 ` Dmitry Osipenko
2020-06-21 4:00 ` Dmitry Osipenko
2020-06-21 4:00 ` Dmitry Osipenko
2020-06-30 10:07 ` Marek Szyprowski
2020-06-30 10:07 ` Marek Szyprowski
2020-06-30 10:07 ` Marek Szyprowski
2020-06-30 10:07 ` Marek Szyprowski
2020-06-30 10:07 ` Marek Szyprowski
[not found] ` <559970b6-e80f-90ec-7fb0-1fab742d99de-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2020-07-01 1:45 ` Dmitry Osipenko
2020-07-01 1:45 ` Dmitry Osipenko
2020-07-01 1:45 ` Dmitry Osipenko
2020-07-01 1:45 ` Dmitry Osipenko
2020-07-01 1:45 ` Dmitry Osipenko
2020-07-01 1:45 ` Dmitry Osipenko
[not found] ` <CGME20200619103711eucas1p188e07cb9aaad13d39238aac4fe84b10c@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 27/36] drm: rcar-du: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103712eucas1p1a29d1fe41061ed5b138a9cdd5d811419@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 28/36] dmabuf: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103713eucas1p2f4b6b66a376a72d1bf62ea6d92572045@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 29/36] staging: ion: remove dead code Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103714eucas1p2bfc6c1d97d7913ad5988e3aaef8cc5ff@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 30/36] staging: ion: fix common struct sg_table related issues Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103715eucas1p12d01355499fbecb8632472b1b8230e6f@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 32/36] misc: fastrpc: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103716eucas1p1b7c50f7b421fb29829050b9355e3e644@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 33/36] rapidio: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-21 1:23 ` kernel test robot [this message]
2020-06-21 1:23 ` kernel test robot
2020-06-21 1:23 ` kernel test robot
2020-06-21 1:23 ` kernel test robot
2020-06-23 15:46 ` [kbuild] " Dan Carpenter
2020-06-23 15:46 ` Dan Carpenter
2020-06-23 15:46 ` Dan Carpenter
2020-06-23 15:46 ` [kbuild] " Dan Carpenter
2020-06-23 15:46 ` Dan Carpenter
[not found] ` <CGME20200630084445eucas1p1e85857b5d046648578f1447f8ba521a5@eucas1p1.samsung.com>
2020-06-30 8:44 ` [PATCH v8] " Marek Szyprowski
2020-06-30 8:44 ` Marek Szyprowski
2020-06-30 8:44 ` Marek Szyprowski
2020-06-30 8:44 ` Marek Szyprowski
[not found] ` <CGME20200619103716eucas1p28d6da172346acf044d3c1f213d9543ef@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 34/36] samples: vfio-mdev/mbochs: " Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103717eucas1p23b82366794c92cc70c0492e4ca29c4a1@eucas1p2.samsung.com>
2020-06-19 10:36 ` [PATCH v7 35/36] media: pci: fix common ALSA DMA-mapping related codes Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200619103718eucas1p11cd577b435672197f48bfcba2d06bc18@eucas1p1.samsung.com>
2020-06-19 10:36 ` [PATCH v7 36/36] videobuf2: use sgtable-based scatterlist wrappers Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
2020-06-19 10:36 ` Marek Szyprowski
[not found] ` <CGME20200630104527eucas1p13f19c24ff053556fb1fa7dc72be14c77@eucas1p1.samsung.com>
2020-06-30 10:45 ` [PATCH v8] " Marek Szyprowski
2020-06-30 10:45 ` Marek Szyprowski
2020-06-30 10:45 ` Marek Szyprowski
2020-06-30 10:45 ` Marek Szyprowski
2020-06-30 8:49 ` [PATCH v7 00/36] DRM: fix struct sg_table nents vs. orig_nents misuse Marek Szyprowski
2020-06-30 8:49 ` Marek Szyprowski
2020-06-30 8:49 ` Marek Szyprowski
2020-06-30 8:49 ` Marek Szyprowski
2020-06-23 14:31 [PATCH v7 33/36] rapidio: fix common struct sg_table related issues 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=202006210924.l7ZUJ53c%lkp@intel.com \
--to=lkp@intel.com \
--cc=airlied@linux.ie \
--cc=alex.bou9@gmail.com \
--cc=b.zolnierkie@samsung.com \
--cc=clang-built-linux@googlegroups.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hch@lst.de \
--cc=iommu@lists.linux-foundation.org \
--cc=kbuild-all@lists.01.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mporter@kernel.crashing.org \
--cc=robin.murphy@arm.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.