From: kernel test robot <lkp@intel.com>
To: Philip Yang <Philip.Yang@amd.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
Linux Memory Management List <linux-mm@kvack.org>,
Alex Deucher <alexander.deucher@amd.com>,
Felix Kuehling <Felix.Kuehling@amd.com>
Subject: [linux-next:master 2083/2969] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c:2067:22: warning: variable 'p' set but not used
Date: Mon, 31 Jan 2022 23:50:41 +0800 [thread overview]
Message-ID: <202201312316.DZLM8JSq-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 887a333c44eb67973622e530e43cd5e4cf9af927
commit: 367c9b0f1b8750a704070e7ae85234d591290434 [2083/2969] drm/amdkfd: Ensure mm remain valid in svm deferred_list work
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220131/202201312316.DZLM8JSq-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2cdbaca3943a4d6259119f185656328bd3805b68)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=367c9b0f1b8750a704070e7ae85234d591290434
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 367c9b0f1b8750a704070e7ae85234d591290434
# 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=x86_64 SHELL=/bin/bash drivers/gpu/
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/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c:2067:22: warning: variable 'p' set but not used [-Wunused-but-set-variable]
struct kfd_process *p;
^
1 warning generated.
vim +/p +2067 drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c
373e3ccd859b4b Philip Yang 2021-04-19 2061
4683cfecadeb38 Philip Yang 2020-04-08 2062 static void svm_range_deferred_list_work(struct work_struct *work)
4683cfecadeb38 Philip Yang 2020-04-08 2063 {
4683cfecadeb38 Philip Yang 2020-04-08 2064 struct svm_range_list *svms;
4683cfecadeb38 Philip Yang 2020-04-08 2065 struct svm_range *prange;
4683cfecadeb38 Philip Yang 2020-04-08 2066 struct mm_struct *mm;
a0c55ecee10055 Philip Yang 2021-11-16 @2067 struct kfd_process *p;
4683cfecadeb38 Philip Yang 2020-04-08 2068
4683cfecadeb38 Philip Yang 2020-04-08 2069 svms = container_of(work, struct svm_range_list, deferred_list_work);
4683cfecadeb38 Philip Yang 2020-04-08 2070 pr_debug("enter svms 0x%p\n", svms);
4683cfecadeb38 Philip Yang 2020-04-08 2071
a0c55ecee10055 Philip Yang 2021-11-16 2072 p = container_of(svms, struct kfd_process, svms);
367c9b0f1b8750 Philip Yang 2022-01-18 2073
367c9b0f1b8750 Philip Yang 2022-01-18 2074 spin_lock(&svms->deferred_list_lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2075 while (!list_empty(&svms->deferred_range_list)) {
367c9b0f1b8750 Philip Yang 2022-01-18 2076 prange = list_first_entry(&svms->deferred_range_list,
367c9b0f1b8750 Philip Yang 2022-01-18 2077 struct svm_range, deferred_list);
367c9b0f1b8750 Philip Yang 2022-01-18 2078 spin_unlock(&svms->deferred_list_lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2079
367c9b0f1b8750 Philip Yang 2022-01-18 2080 pr_debug("prange 0x%p [0x%lx 0x%lx] op %d\n", prange,
367c9b0f1b8750 Philip Yang 2022-01-18 2081 prange->start, prange->last, prange->work_item.op);
367c9b0f1b8750 Philip Yang 2022-01-18 2082
367c9b0f1b8750 Philip Yang 2022-01-18 2083 mm = prange->work_item.mm;
a44fe9ee051aca Felix Kuehling 2021-11-05 2084 retry:
4683cfecadeb38 Philip Yang 2020-04-08 2085 mmap_write_lock(mm);
4683cfecadeb38 Philip Yang 2020-04-08 2086
a0c55ecee10055 Philip Yang 2021-11-16 2087 /* Checking for the need to drain retry faults must be inside
a44fe9ee051aca Felix Kuehling 2021-11-05 2088 * mmap write lock to serialize with munmap notifiers.
4683cfecadeb38 Philip Yang 2020-04-08 2089 */
2e4477282c8cff Philip Yang 2021-11-19 2090 if (unlikely(atomic_read(&svms->drain_pagefaults))) {
a44fe9ee051aca Felix Kuehling 2021-11-05 2091 mmap_write_unlock(mm);
a44fe9ee051aca Felix Kuehling 2021-11-05 2092 svm_range_drain_retry_fault(svms);
a44fe9ee051aca Felix Kuehling 2021-11-05 2093 goto retry;
a44fe9ee051aca Felix Kuehling 2021-11-05 2094 }
a0c55ecee10055 Philip Yang 2021-11-16 2095
367c9b0f1b8750 Philip Yang 2022-01-18 2096 /* Remove from deferred_list must be inside mmap write lock, for
367c9b0f1b8750 Philip Yang 2022-01-18 2097 * two race cases:
367c9b0f1b8750 Philip Yang 2022-01-18 2098 * 1. unmap_from_cpu may change work_item.op and add the range
367c9b0f1b8750 Philip Yang 2022-01-18 2099 * to deferred_list again, cause use after free bug.
367c9b0f1b8750 Philip Yang 2022-01-18 2100 * 2. svm_range_list_lock_and_flush_work may hold mmap write
367c9b0f1b8750 Philip Yang 2022-01-18 2101 * lock and continue because deferred_list is empty, but
367c9b0f1b8750 Philip Yang 2022-01-18 2102 * deferred_list work is actually waiting for mmap lock.
367c9b0f1b8750 Philip Yang 2022-01-18 2103 */
a0c55ecee10055 Philip Yang 2021-11-16 2104 spin_lock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2105 list_del_init(&prange->deferred_list);
4683cfecadeb38 Philip Yang 2020-04-08 2106 spin_unlock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2107
a0c55ecee10055 Philip Yang 2021-11-16 2108 mutex_lock(&svms->lock);
0b0e518d61af8e Felix Kuehling 2021-02-24 2109 mutex_lock(&prange->migrate_mutex);
4683cfecadeb38 Philip Yang 2020-04-08 2110 while (!list_empty(&prange->child_list)) {
4683cfecadeb38 Philip Yang 2020-04-08 2111 struct svm_range *pchild;
4683cfecadeb38 Philip Yang 2020-04-08 2112
4683cfecadeb38 Philip Yang 2020-04-08 2113 pchild = list_first_entry(&prange->child_list,
4683cfecadeb38 Philip Yang 2020-04-08 2114 struct svm_range, child_list);
4683cfecadeb38 Philip Yang 2020-04-08 2115 pr_debug("child prange 0x%p op %d\n", pchild,
4683cfecadeb38 Philip Yang 2020-04-08 2116 pchild->work_item.op);
4683cfecadeb38 Philip Yang 2020-04-08 2117 list_del_init(&pchild->child_list);
367c9b0f1b8750 Philip Yang 2022-01-18 2118 svm_range_handle_list_op(svms, pchild, mm);
4683cfecadeb38 Philip Yang 2020-04-08 2119 }
0b0e518d61af8e Felix Kuehling 2021-02-24 2120 mutex_unlock(&prange->migrate_mutex);
4683cfecadeb38 Philip Yang 2020-04-08 2121
367c9b0f1b8750 Philip Yang 2022-01-18 2122 svm_range_handle_list_op(svms, prange, mm);
4683cfecadeb38 Philip Yang 2020-04-08 2123 mutex_unlock(&svms->lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2124 mmap_write_unlock(mm);
367c9b0f1b8750 Philip Yang 2022-01-18 2125
367c9b0f1b8750 Philip Yang 2022-01-18 2126 /* Pairs with mmget in svm_range_add_list_work */
367c9b0f1b8750 Philip Yang 2022-01-18 2127 mmput(mm);
4683cfecadeb38 Philip Yang 2020-04-08 2128
4683cfecadeb38 Philip Yang 2020-04-08 2129 spin_lock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2130 }
4683cfecadeb38 Philip Yang 2020-04-08 2131 spin_unlock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2132 pr_debug("exit svms 0x%p\n", svms);
4683cfecadeb38 Philip Yang 2020-04-08 2133 }
4683cfecadeb38 Philip Yang 2020-04-08 2134
:::::: The code at line 2067 was first introduced by commit
:::::: a0c55ecee10055901c9c1b46d0d129cb6b51fa5d drm/amdkfd: process exit and retry fault race
:::::: TO: Philip Yang <Philip.Yang@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>
---
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: [linux-next:master 2083/2969] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c:2067:22: warning: variable 'p' set but not used
Date: Mon, 31 Jan 2022 23:50:41 +0800 [thread overview]
Message-ID: <202201312316.DZLM8JSq-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7927 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 887a333c44eb67973622e530e43cd5e4cf9af927
commit: 367c9b0f1b8750a704070e7ae85234d591290434 [2083/2969] drm/amdkfd: Ensure mm remain valid in svm deferred_list work
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220131/202201312316.DZLM8JSq-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2cdbaca3943a4d6259119f185656328bd3805b68)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=367c9b0f1b8750a704070e7ae85234d591290434
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 367c9b0f1b8750a704070e7ae85234d591290434
# 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=x86_64 SHELL=/bin/bash drivers/gpu/
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/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c:2067:22: warning: variable 'p' set but not used [-Wunused-but-set-variable]
struct kfd_process *p;
^
1 warning generated.
vim +/p +2067 drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c
373e3ccd859b4b Philip Yang 2021-04-19 2061
4683cfecadeb38 Philip Yang 2020-04-08 2062 static void svm_range_deferred_list_work(struct work_struct *work)
4683cfecadeb38 Philip Yang 2020-04-08 2063 {
4683cfecadeb38 Philip Yang 2020-04-08 2064 struct svm_range_list *svms;
4683cfecadeb38 Philip Yang 2020-04-08 2065 struct svm_range *prange;
4683cfecadeb38 Philip Yang 2020-04-08 2066 struct mm_struct *mm;
a0c55ecee10055 Philip Yang 2021-11-16 @2067 struct kfd_process *p;
4683cfecadeb38 Philip Yang 2020-04-08 2068
4683cfecadeb38 Philip Yang 2020-04-08 2069 svms = container_of(work, struct svm_range_list, deferred_list_work);
4683cfecadeb38 Philip Yang 2020-04-08 2070 pr_debug("enter svms 0x%p\n", svms);
4683cfecadeb38 Philip Yang 2020-04-08 2071
a0c55ecee10055 Philip Yang 2021-11-16 2072 p = container_of(svms, struct kfd_process, svms);
367c9b0f1b8750 Philip Yang 2022-01-18 2073
367c9b0f1b8750 Philip Yang 2022-01-18 2074 spin_lock(&svms->deferred_list_lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2075 while (!list_empty(&svms->deferred_range_list)) {
367c9b0f1b8750 Philip Yang 2022-01-18 2076 prange = list_first_entry(&svms->deferred_range_list,
367c9b0f1b8750 Philip Yang 2022-01-18 2077 struct svm_range, deferred_list);
367c9b0f1b8750 Philip Yang 2022-01-18 2078 spin_unlock(&svms->deferred_list_lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2079
367c9b0f1b8750 Philip Yang 2022-01-18 2080 pr_debug("prange 0x%p [0x%lx 0x%lx] op %d\n", prange,
367c9b0f1b8750 Philip Yang 2022-01-18 2081 prange->start, prange->last, prange->work_item.op);
367c9b0f1b8750 Philip Yang 2022-01-18 2082
367c9b0f1b8750 Philip Yang 2022-01-18 2083 mm = prange->work_item.mm;
a44fe9ee051aca Felix Kuehling 2021-11-05 2084 retry:
4683cfecadeb38 Philip Yang 2020-04-08 2085 mmap_write_lock(mm);
4683cfecadeb38 Philip Yang 2020-04-08 2086
a0c55ecee10055 Philip Yang 2021-11-16 2087 /* Checking for the need to drain retry faults must be inside
a44fe9ee051aca Felix Kuehling 2021-11-05 2088 * mmap write lock to serialize with munmap notifiers.
4683cfecadeb38 Philip Yang 2020-04-08 2089 */
2e4477282c8cff Philip Yang 2021-11-19 2090 if (unlikely(atomic_read(&svms->drain_pagefaults))) {
a44fe9ee051aca Felix Kuehling 2021-11-05 2091 mmap_write_unlock(mm);
a44fe9ee051aca Felix Kuehling 2021-11-05 2092 svm_range_drain_retry_fault(svms);
a44fe9ee051aca Felix Kuehling 2021-11-05 2093 goto retry;
a44fe9ee051aca Felix Kuehling 2021-11-05 2094 }
a0c55ecee10055 Philip Yang 2021-11-16 2095
367c9b0f1b8750 Philip Yang 2022-01-18 2096 /* Remove from deferred_list must be inside mmap write lock, for
367c9b0f1b8750 Philip Yang 2022-01-18 2097 * two race cases:
367c9b0f1b8750 Philip Yang 2022-01-18 2098 * 1. unmap_from_cpu may change work_item.op and add the range
367c9b0f1b8750 Philip Yang 2022-01-18 2099 * to deferred_list again, cause use after free bug.
367c9b0f1b8750 Philip Yang 2022-01-18 2100 * 2. svm_range_list_lock_and_flush_work may hold mmap write
367c9b0f1b8750 Philip Yang 2022-01-18 2101 * lock and continue because deferred_list is empty, but
367c9b0f1b8750 Philip Yang 2022-01-18 2102 * deferred_list work is actually waiting for mmap lock.
367c9b0f1b8750 Philip Yang 2022-01-18 2103 */
a0c55ecee10055 Philip Yang 2021-11-16 2104 spin_lock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2105 list_del_init(&prange->deferred_list);
4683cfecadeb38 Philip Yang 2020-04-08 2106 spin_unlock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2107
a0c55ecee10055 Philip Yang 2021-11-16 2108 mutex_lock(&svms->lock);
0b0e518d61af8e Felix Kuehling 2021-02-24 2109 mutex_lock(&prange->migrate_mutex);
4683cfecadeb38 Philip Yang 2020-04-08 2110 while (!list_empty(&prange->child_list)) {
4683cfecadeb38 Philip Yang 2020-04-08 2111 struct svm_range *pchild;
4683cfecadeb38 Philip Yang 2020-04-08 2112
4683cfecadeb38 Philip Yang 2020-04-08 2113 pchild = list_first_entry(&prange->child_list,
4683cfecadeb38 Philip Yang 2020-04-08 2114 struct svm_range, child_list);
4683cfecadeb38 Philip Yang 2020-04-08 2115 pr_debug("child prange 0x%p op %d\n", pchild,
4683cfecadeb38 Philip Yang 2020-04-08 2116 pchild->work_item.op);
4683cfecadeb38 Philip Yang 2020-04-08 2117 list_del_init(&pchild->child_list);
367c9b0f1b8750 Philip Yang 2022-01-18 2118 svm_range_handle_list_op(svms, pchild, mm);
4683cfecadeb38 Philip Yang 2020-04-08 2119 }
0b0e518d61af8e Felix Kuehling 2021-02-24 2120 mutex_unlock(&prange->migrate_mutex);
4683cfecadeb38 Philip Yang 2020-04-08 2121
367c9b0f1b8750 Philip Yang 2022-01-18 2122 svm_range_handle_list_op(svms, prange, mm);
4683cfecadeb38 Philip Yang 2020-04-08 2123 mutex_unlock(&svms->lock);
367c9b0f1b8750 Philip Yang 2022-01-18 2124 mmap_write_unlock(mm);
367c9b0f1b8750 Philip Yang 2022-01-18 2125
367c9b0f1b8750 Philip Yang 2022-01-18 2126 /* Pairs with mmget in svm_range_add_list_work */
367c9b0f1b8750 Philip Yang 2022-01-18 2127 mmput(mm);
4683cfecadeb38 Philip Yang 2020-04-08 2128
4683cfecadeb38 Philip Yang 2020-04-08 2129 spin_lock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2130 }
4683cfecadeb38 Philip Yang 2020-04-08 2131 spin_unlock(&svms->deferred_list_lock);
4683cfecadeb38 Philip Yang 2020-04-08 2132 pr_debug("exit svms 0x%p\n", svms);
4683cfecadeb38 Philip Yang 2020-04-08 2133 }
4683cfecadeb38 Philip Yang 2020-04-08 2134
:::::: The code at line 2067 was first introduced by commit
:::::: a0c55ecee10055901c9c1b46d0d129cb6b51fa5d drm/amdkfd: process exit and retry fault race
:::::: TO: Philip Yang <Philip.Yang@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-01-31 15:51 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-31 15:50 kernel test robot [this message]
2022-01-31 15:50 ` [linux-next:master 2083/2969] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c:2067:22: warning: variable 'p' set but not used 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=202201312316.DZLM8JSq-lkp@intel.com \
--to=lkp@intel.com \
--cc=Felix.Kuehling@amd.com \
--cc=Philip.Yang@amd.com \
--cc=alexander.deucher@amd.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-mm@kvack.org \
--cc=llvm@lists.linux.dev \
/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.