From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 4/8] mmap locking API: convert mmap_sem call sites missed by coccinelle
Date: Fri, 27 Mar 2020 07:27:30 +0800 [thread overview]
Message-ID: <202003270749.ureZ7NMF%lkp@intel.com> (raw)
In-Reply-To: <20200326070236.235835-5-walken@google.com>
[-- Attachment #1: Type: text/plain, Size: 9646 bytes --]
Hi Michel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on rdma/for-next]
[also build test ERROR on linus/master v5.6-rc7]
[cannot apply to powerpc/next next-20200326]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Michel-Lespinasse/Add-a-new-mmap-locking-API-wrapping-mmap_sem-calls/20200327-035215
base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
config: mips-randconfig-a001-20200326 (attached as .config)
compiler: mips64el-linux-gcc (GCC) 5.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=5.5.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
arch/mips/mm/fault.c: In function '__do_page_fault':
>> arch/mips/mm/fault.c:202:2: error: implicit declaration of function 'mm_read_unlock' [-Werror=implicit-function-declaration]
mm_read_unlock(mm);
^
cc1: all warnings being treated as errors
vim +/mm_read_unlock +202 arch/mips/mm/fault.c
89
90 /*
91 * If we're in an interrupt or have no user
92 * context, we must not take the fault..
93 */
94 if (faulthandler_disabled() || !mm)
95 goto bad_area_nosemaphore;
96
97 if (user_mode(regs))
98 flags |= FAULT_FLAG_USER;
99 retry:
100 mmap_read_lock(mm);
101 vma = find_vma(mm, address);
102 if (!vma)
103 goto bad_area;
104 if (vma->vm_start <= address)
105 goto good_area;
106 if (!(vma->vm_flags & VM_GROWSDOWN))
107 goto bad_area;
108 if (expand_stack(vma, address))
109 goto bad_area;
110 /*
111 * Ok, we have a good vm_area for this memory access, so
112 * we can handle it..
113 */
114 good_area:
115 si_code = SEGV_ACCERR;
116
117 if (write) {
118 if (!(vma->vm_flags & VM_WRITE))
119 goto bad_area;
120 flags |= FAULT_FLAG_WRITE;
121 } else {
122 if (cpu_has_rixi) {
123 if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) {
124 #if 0
125 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n",
126 raw_smp_processor_id(),
127 current->comm, current->pid,
128 field, address, write,
129 field, regs->cp0_epc);
130 #endif
131 goto bad_area;
132 }
133 if (!(vma->vm_flags & VM_READ) &&
134 exception_epc(regs) != address) {
135 #if 0
136 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
137 raw_smp_processor_id(),
138 current->comm, current->pid,
139 field, address, write,
140 field, regs->cp0_epc);
141 #endif
142 goto bad_area;
143 }
144 } else {
145 if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
146 goto bad_area;
147 }
148 }
149
150 /*
151 * If for any reason at all we couldn't handle the fault,
152 * make sure we exit gracefully rather than endlessly redo
153 * the fault.
154 */
155 fault = handle_mm_fault(vma, address, flags);
156
157 if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
158 return;
159
160 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
161 if (unlikely(fault & VM_FAULT_ERROR)) {
162 if (fault & VM_FAULT_OOM)
163 goto out_of_memory;
164 else if (fault & VM_FAULT_SIGSEGV)
165 goto bad_area;
166 else if (fault & VM_FAULT_SIGBUS)
167 goto do_sigbus;
168 BUG();
169 }
170 if (flags & FAULT_FLAG_ALLOW_RETRY) {
171 if (fault & VM_FAULT_MAJOR) {
172 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1,
173 regs, address);
174 tsk->maj_flt++;
175 } else {
176 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1,
177 regs, address);
178 tsk->min_flt++;
179 }
180 if (fault & VM_FAULT_RETRY) {
181 flags &= ~FAULT_FLAG_ALLOW_RETRY;
182 flags |= FAULT_FLAG_TRIED;
183
184 /*
185 * No need to up_read(&mm->mmap_sem) as we would
186 * have already released it in __lock_page_or_retry
187 * in mm/filemap.c.
188 */
189
190 goto retry;
191 }
192 }
193
194 mmap_read_unlock(mm);
195 return;
196
197 /*
198 * Something tried to access memory that isn't in our memory map..
199 * Fix it, but check if it's kernel or user first..
200 */
201 bad_area:
> 202 mm_read_unlock(mm);
203
204 bad_area_nosemaphore:
205 /* User mode accesses just cause a SIGSEGV */
206 if (user_mode(regs)) {
207 tsk->thread.cp0_badvaddr = address;
208 tsk->thread.error_code = write;
209 if (show_unhandled_signals &&
210 unhandled_signal(tsk, SIGSEGV) &&
211 __ratelimit(&ratelimit_state)) {
212 pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
213 tsk->comm,
214 write ? "write access to" : "read access from",
215 field, address);
216 pr_info("epc = %0*lx in", field,
217 (unsigned long) regs->cp0_epc);
218 print_vma_addr(KERN_CONT " ", regs->cp0_epc);
219 pr_cont("\n");
220 pr_info("ra = %0*lx in", field,
221 (unsigned long) regs->regs[31]);
222 print_vma_addr(KERN_CONT " ", regs->regs[31]);
223 pr_cont("\n");
224 }
225 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
226 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
227 return;
228 }
229
230 no_context:
231 /* Are we prepared to handle this kernel fault? */
232 if (fixup_exception(regs)) {
233 current->thread.cp0_baduaddr = address;
234 return;
235 }
236
237 /*
238 * Oops. The kernel tried to access some bad page. We'll have to
239 * terminate things with extreme prejudice.
240 */
241 bust_spinlocks(1);
242
243 printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at "
244 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
245 raw_smp_processor_id(), field, address, field, regs->cp0_epc,
246 field, regs->regs[31]);
247 die("Oops", regs);
248
249 out_of_memory:
250 /*
251 * We ran out of memory, call the OOM killer, and return the userspace
252 * (which will retry the fault, or kill us if we got oom-killed).
253 */
254 mm_read_unlock(mm);
255 if (!user_mode(regs))
256 goto no_context;
257 pagefault_out_of_memory();
258 return;
259
260 do_sigbus:
261 mm_read_unlock(mm);
262
263 /* Kernel mode? Handle exceptions or die */
264 if (!user_mode(regs))
265 goto no_context;
266
267 /*
268 * Send a sigbus, regardless of whether we were in kernel
269 * or user mode.
270 */
271 #if 0
272 printk("do_page_fault() #3: sending SIGBUS to %s for "
273 "invalid %s\n%0*lx (epc == %0*lx, ra == %0*lx)\n",
274 tsk->comm,
275 write ? "write access to" : "read access from",
276 field, address,
277 field, (unsigned long) regs->cp0_epc,
278 field, (unsigned long) regs->regs[31]);
279 #endif
280 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
281 tsk->thread.cp0_badvaddr = address;
282 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
283
284 return;
285 #ifndef CONFIG_64BIT
286 vmalloc_fault:
287 {
288 /*
289 * Synchronize this task's top level page-table
290 * with the 'reference' page table.
291 *
292 * Do _not_ use "tsk" here. We might be inside
293 * an interrupt in the middle of a task switch..
294 */
295 int offset = pgd_index(address);
296 pgd_t *pgd, *pgd_k;
297 p4d_t *p4d, *p4d_k;
298 pud_t *pud, *pud_k;
299 pmd_t *pmd, *pmd_k;
300 pte_t *pte_k;
301
302 pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset;
303 pgd_k = init_mm.pgd + offset;
304
305 if (!pgd_present(*pgd_k))
306 goto no_context;
307 set_pgd(pgd, *pgd_k);
308
309 p4d = p4d_offset(pgd, address);
310 p4d_k = p4d_offset(pgd_k, address);
311 if (!p4d_present(*p4d_k))
312 goto no_context;
313
314 pud = pud_offset(p4d, address);
315 pud_k = pud_offset(p4d_k, address);
316 if (!pud_present(*pud_k))
317 goto no_context;
318
319 pmd = pmd_offset(pud, address);
320 pmd_k = pmd_offset(pud_k, address);
321 if (!pmd_present(*pmd_k))
322 goto no_context;
323 set_pmd(pmd, *pmd_k);
324
325 pte_k = pte_offset_kernel(pmd_k, address);
326 if (!pte_present(*pte_k))
327 goto no_context;
328 return;
329 }
330 #endif
331 }
332
---
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: 33578 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Michel Lespinasse <walken@google.com>
Cc: kbuild-all@lists.01.org,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm <linux-mm@kvack.org>
Subject: Re: [PATCH 4/8] mmap locking API: convert mmap_sem call sites missed by coccinelle
Date: Fri, 27 Mar 2020 07:27:30 +0800 [thread overview]
Message-ID: <202003270749.ureZ7NMF%lkp@intel.com> (raw)
In-Reply-To: <20200326070236.235835-5-walken@google.com>
[-- Attachment #1: Type: text/plain, Size: 9362 bytes --]
Hi Michel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on rdma/for-next]
[also build test ERROR on linus/master v5.6-rc7]
[cannot apply to powerpc/next next-20200326]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Michel-Lespinasse/Add-a-new-mmap-locking-API-wrapping-mmap_sem-calls/20200327-035215
base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
config: mips-randconfig-a001-20200326 (attached as .config)
compiler: mips64el-linux-gcc (GCC) 5.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=5.5.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
arch/mips/mm/fault.c: In function '__do_page_fault':
>> arch/mips/mm/fault.c:202:2: error: implicit declaration of function 'mm_read_unlock' [-Werror=implicit-function-declaration]
mm_read_unlock(mm);
^
cc1: all warnings being treated as errors
vim +/mm_read_unlock +202 arch/mips/mm/fault.c
89
90 /*
91 * If we're in an interrupt or have no user
92 * context, we must not take the fault..
93 */
94 if (faulthandler_disabled() || !mm)
95 goto bad_area_nosemaphore;
96
97 if (user_mode(regs))
98 flags |= FAULT_FLAG_USER;
99 retry:
100 mmap_read_lock(mm);
101 vma = find_vma(mm, address);
102 if (!vma)
103 goto bad_area;
104 if (vma->vm_start <= address)
105 goto good_area;
106 if (!(vma->vm_flags & VM_GROWSDOWN))
107 goto bad_area;
108 if (expand_stack(vma, address))
109 goto bad_area;
110 /*
111 * Ok, we have a good vm_area for this memory access, so
112 * we can handle it..
113 */
114 good_area:
115 si_code = SEGV_ACCERR;
116
117 if (write) {
118 if (!(vma->vm_flags & VM_WRITE))
119 goto bad_area;
120 flags |= FAULT_FLAG_WRITE;
121 } else {
122 if (cpu_has_rixi) {
123 if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) {
124 #if 0
125 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n",
126 raw_smp_processor_id(),
127 current->comm, current->pid,
128 field, address, write,
129 field, regs->cp0_epc);
130 #endif
131 goto bad_area;
132 }
133 if (!(vma->vm_flags & VM_READ) &&
134 exception_epc(regs) != address) {
135 #if 0
136 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
137 raw_smp_processor_id(),
138 current->comm, current->pid,
139 field, address, write,
140 field, regs->cp0_epc);
141 #endif
142 goto bad_area;
143 }
144 } else {
145 if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
146 goto bad_area;
147 }
148 }
149
150 /*
151 * If for any reason at all we couldn't handle the fault,
152 * make sure we exit gracefully rather than endlessly redo
153 * the fault.
154 */
155 fault = handle_mm_fault(vma, address, flags);
156
157 if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
158 return;
159
160 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
161 if (unlikely(fault & VM_FAULT_ERROR)) {
162 if (fault & VM_FAULT_OOM)
163 goto out_of_memory;
164 else if (fault & VM_FAULT_SIGSEGV)
165 goto bad_area;
166 else if (fault & VM_FAULT_SIGBUS)
167 goto do_sigbus;
168 BUG();
169 }
170 if (flags & FAULT_FLAG_ALLOW_RETRY) {
171 if (fault & VM_FAULT_MAJOR) {
172 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1,
173 regs, address);
174 tsk->maj_flt++;
175 } else {
176 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1,
177 regs, address);
178 tsk->min_flt++;
179 }
180 if (fault & VM_FAULT_RETRY) {
181 flags &= ~FAULT_FLAG_ALLOW_RETRY;
182 flags |= FAULT_FLAG_TRIED;
183
184 /*
185 * No need to up_read(&mm->mmap_sem) as we would
186 * have already released it in __lock_page_or_retry
187 * in mm/filemap.c.
188 */
189
190 goto retry;
191 }
192 }
193
194 mmap_read_unlock(mm);
195 return;
196
197 /*
198 * Something tried to access memory that isn't in our memory map..
199 * Fix it, but check if it's kernel or user first..
200 */
201 bad_area:
> 202 mm_read_unlock(mm);
203
204 bad_area_nosemaphore:
205 /* User mode accesses just cause a SIGSEGV */
206 if (user_mode(regs)) {
207 tsk->thread.cp0_badvaddr = address;
208 tsk->thread.error_code = write;
209 if (show_unhandled_signals &&
210 unhandled_signal(tsk, SIGSEGV) &&
211 __ratelimit(&ratelimit_state)) {
212 pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
213 tsk->comm,
214 write ? "write access to" : "read access from",
215 field, address);
216 pr_info("epc = %0*lx in", field,
217 (unsigned long) regs->cp0_epc);
218 print_vma_addr(KERN_CONT " ", regs->cp0_epc);
219 pr_cont("\n");
220 pr_info("ra = %0*lx in", field,
221 (unsigned long) regs->regs[31]);
222 print_vma_addr(KERN_CONT " ", regs->regs[31]);
223 pr_cont("\n");
224 }
225 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
226 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
227 return;
228 }
229
230 no_context:
231 /* Are we prepared to handle this kernel fault? */
232 if (fixup_exception(regs)) {
233 current->thread.cp0_baduaddr = address;
234 return;
235 }
236
237 /*
238 * Oops. The kernel tried to access some bad page. We'll have to
239 * terminate things with extreme prejudice.
240 */
241 bust_spinlocks(1);
242
243 printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at "
244 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
245 raw_smp_processor_id(), field, address, field, regs->cp0_epc,
246 field, regs->regs[31]);
247 die("Oops", regs);
248
249 out_of_memory:
250 /*
251 * We ran out of memory, call the OOM killer, and return the userspace
252 * (which will retry the fault, or kill us if we got oom-killed).
253 */
254 mm_read_unlock(mm);
255 if (!user_mode(regs))
256 goto no_context;
257 pagefault_out_of_memory();
258 return;
259
260 do_sigbus:
261 mm_read_unlock(mm);
262
263 /* Kernel mode? Handle exceptions or die */
264 if (!user_mode(regs))
265 goto no_context;
266
267 /*
268 * Send a sigbus, regardless of whether we were in kernel
269 * or user mode.
270 */
271 #if 0
272 printk("do_page_fault() #3: sending SIGBUS to %s for "
273 "invalid %s\n%0*lx (epc == %0*lx, ra == %0*lx)\n",
274 tsk->comm,
275 write ? "write access to" : "read access from",
276 field, address,
277 field, (unsigned long) regs->cp0_epc,
278 field, (unsigned long) regs->regs[31]);
279 #endif
280 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
281 tsk->thread.cp0_badvaddr = address;
282 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
283
284 return;
285 #ifndef CONFIG_64BIT
286 vmalloc_fault:
287 {
288 /*
289 * Synchronize this task's top level page-table
290 * with the 'reference' page table.
291 *
292 * Do _not_ use "tsk" here. We might be inside
293 * an interrupt in the middle of a task switch..
294 */
295 int offset = pgd_index(address);
296 pgd_t *pgd, *pgd_k;
297 p4d_t *p4d, *p4d_k;
298 pud_t *pud, *pud_k;
299 pmd_t *pmd, *pmd_k;
300 pte_t *pte_k;
301
302 pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset;
303 pgd_k = init_mm.pgd + offset;
304
305 if (!pgd_present(*pgd_k))
306 goto no_context;
307 set_pgd(pgd, *pgd_k);
308
309 p4d = p4d_offset(pgd, address);
310 p4d_k = p4d_offset(pgd_k, address);
311 if (!p4d_present(*p4d_k))
312 goto no_context;
313
314 pud = pud_offset(p4d, address);
315 pud_k = pud_offset(p4d_k, address);
316 if (!pud_present(*pud_k))
317 goto no_context;
318
319 pmd = pmd_offset(pud, address);
320 pmd_k = pmd_offset(pud_k, address);
321 if (!pmd_present(*pmd_k))
322 goto no_context;
323 set_pmd(pmd, *pmd_k);
324
325 pte_k = pte_offset_kernel(pmd_k, address);
326 if (!pte_present(*pte_k))
327 goto no_context;
328 return;
329 }
330 #endif
331 }
332
---
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: 33578 bytes --]
next prev parent reply other threads:[~2020-03-26 23:27 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-26 7:02 [PATCH 0/8] Add a new mmap locking API wrapping mmap_sem calls Michel Lespinasse
2020-03-26 7:02 ` [PATCH 1/8] mmap locking API: initial implementation as rwsem wrappers Michel Lespinasse
2020-03-26 17:56 ` Jason Gunthorpe
2020-03-26 18:06 ` Matthew Wilcox
2020-03-26 18:09 ` Matthew Wilcox
2020-03-26 22:09 ` Michel Lespinasse
2020-03-26 7:02 ` [PATCH 2/8] MMU notifier: use the new mmap locking API Michel Lespinasse
2020-03-26 7:02 ` [PATCH 3/8] mmap locking API: use coccinelle to convert mmap_sem rwsem call sites Michel Lespinasse
2020-03-27 0:01 ` kbuild test robot
2020-03-27 0:01 ` kbuild test robot
2020-03-27 0:40 ` kbuild test robot
2020-03-27 0:40 ` kbuild test robot
2020-03-26 7:02 ` [PATCH 4/8] mmap locking API: convert mmap_sem call sites missed by coccinelle Michel Lespinasse
2020-03-26 23:13 ` kbuild test robot
2020-03-26 23:13 ` kbuild test robot
2020-03-26 23:27 ` kbuild test robot [this message]
2020-03-26 23:27 ` kbuild test robot
2020-03-26 7:02 ` [PATCH 5/8] mmap locking API: convert nested write lock sites Michel Lespinasse
2020-03-26 12:09 ` Matthew Wilcox
2020-03-26 12:56 ` Michel Lespinasse
2020-03-26 7:02 ` [PATCH 6/8] mmap locking API: add mmap_read_release() and mmap_read_unlock_non_owner() Michel Lespinasse
2020-03-26 7:02 ` [PATCH 7/8] mmap locking API: add MMAP_LOCK_INITIALIZER Michel Lespinasse
2020-04-06 9:46 ` Laurent Dufour
2020-04-06 13:04 ` Michel Lespinasse
2020-03-26 7:02 ` [PATCH 8/8] mmap locking API: rename mmap_sem to mmap_lock Michel Lespinasse
2020-04-06 12:45 ` Laurent Dufour
2020-04-06 13:17 ` Michel Lespinasse
2020-04-06 16:03 ` Davidlohr Bueso
2020-03-26 7:13 ` [PATCH 0/8] Add a new mmap locking API wrapping mmap_sem calls Michel Lespinasse
-- strict thread matches above, loose matches on Subject: below --
2020-03-26 13:41 [PATCH 4/8] mmap locking API: convert mmap_sem call sites missed by coccinelle Markus Elfring
2020-03-26 13:55 ` Baoquan He
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=202003270749.ureZ7NMF%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/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.