* arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock'.
@ 2020-06-25 0:02 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-06-25 0:02 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 20369 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Michel Lespinasse <walken@google.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
CC: Vlastimil Babka <vbabka@suse.cz>
CC: Davidlohr Bueso <dbueso@suse.de>
CC: Daniel Jordan <daniel.m.jordan@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fbb58011fdd9ca2e2f0e329d11085ddf46830c5a
commit: da1c55f1b272f4bd54671d459b39ea7b54944ef9 mmap locking API: rename mmap_sem to mmap_lock
date: 2 weeks ago
:::::: branch date: 3 hours ago
:::::: commit date: 2 weeks ago
config: mips-randconfig-m031-20200624 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock'.
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=da1c55f1b272f4bd54671d459b39ea7b54944ef9
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout da1c55f1b272f4bd54671d459b39ea7b54944ef9
vim +327 arch/mips/mm/fault.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 89
^1da177e4c3f41 Linus Torvalds 2005-04-16 90 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 91 * If we're in an interrupt or have no user
^1da177e4c3f41 Linus Torvalds 2005-04-16 92 * context, we must not take the fault..
^1da177e4c3f41 Linus Torvalds 2005-04-16 93 */
70ffdb9393a726 David Hildenbrand 2015-05-11 94 if (faulthandler_disabled() || !mm)
^1da177e4c3f41 Linus Torvalds 2005-04-16 95 goto bad_area_nosemaphore;
^1da177e4c3f41 Linus Torvalds 2005-04-16 96
759496ba6407c6 Johannes Weiner 2013-09-12 97 if (user_mode(regs))
759496ba6407c6 Johannes Weiner 2013-09-12 98 flags |= FAULT_FLAG_USER;
43ca4957a15a12 Kautuk Consul 2011-12-23 99 retry:
89154dd5313f77 Michel Lespinasse 2020-06-08 100 mmap_read_lock(mm);
^1da177e4c3f41 Linus Torvalds 2005-04-16 101 vma = find_vma(mm, address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 102 if (!vma)
^1da177e4c3f41 Linus Torvalds 2005-04-16 103 goto bad_area;
^1da177e4c3f41 Linus Torvalds 2005-04-16 104 if (vma->vm_start <= address)
^1da177e4c3f41 Linus Torvalds 2005-04-16 105 goto good_area;
^1da177e4c3f41 Linus Torvalds 2005-04-16 106 if (!(vma->vm_flags & VM_GROWSDOWN))
^1da177e4c3f41 Linus Torvalds 2005-04-16 107 goto bad_area;
^1da177e4c3f41 Linus Torvalds 2005-04-16 108 if (expand_stack(vma, address))
^1da177e4c3f41 Linus Torvalds 2005-04-16 109 goto bad_area;
^1da177e4c3f41 Linus Torvalds 2005-04-16 110 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 111 * Ok, we have a good vm_area for this memory access, so
^1da177e4c3f41 Linus Torvalds 2005-04-16 112 * we can handle it..
^1da177e4c3f41 Linus Torvalds 2005-04-16 113 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 114 good_area:
f43a54a0d9168d Eric W. Biederman 2018-04-15 115 si_code = SEGV_ACCERR;
^1da177e4c3f41 Linus Torvalds 2005-04-16 116
^1da177e4c3f41 Linus Torvalds 2005-04-16 117 if (write) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 118 if (!(vma->vm_flags & VM_WRITE))
^1da177e4c3f41 Linus Torvalds 2005-04-16 119 goto bad_area;
759496ba6407c6 Johannes Weiner 2013-09-12 120 flags |= FAULT_FLAG_WRITE;
6dd9344cfc41bc David Daney 2010-02-10 121 } else {
05857c64ecf897 Steven J. Hill 2012-09-13 122 if (cpu_has_rixi) {
6dd9344cfc41bc David Daney 2010-02-10 123 if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) {
6dd9344cfc41bc David Daney 2010-02-10 124 #if 0
6dd9344cfc41bc David Daney 2010-02-10 125 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n",
6dd9344cfc41bc David Daney 2010-02-10 126 raw_smp_processor_id(),
6dd9344cfc41bc David Daney 2010-02-10 127 current->comm, current->pid,
6dd9344cfc41bc David Daney 2010-02-10 128 field, address, write,
6dd9344cfc41bc David Daney 2010-02-10 129 field, regs->cp0_epc);
6dd9344cfc41bc David Daney 2010-02-10 130 #endif
6dd9344cfc41bc David Daney 2010-02-10 131 goto bad_area;
6dd9344cfc41bc David Daney 2010-02-10 132 }
e070dab73523bc Ralf Baechle 2015-07-23 133 if (!(vma->vm_flags & VM_READ) &&
e070dab73523bc Ralf Baechle 2015-07-23 134 exception_epc(regs) != address) {
6dd9344cfc41bc David Daney 2010-02-10 135 #if 0
6dd9344cfc41bc David Daney 2010-02-10 136 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
6dd9344cfc41bc David Daney 2010-02-10 137 raw_smp_processor_id(),
6dd9344cfc41bc David Daney 2010-02-10 138 current->comm, current->pid,
6dd9344cfc41bc David Daney 2010-02-10 139 field, address, write,
6dd9344cfc41bc David Daney 2010-02-10 140 field, regs->cp0_epc);
6dd9344cfc41bc David Daney 2010-02-10 141 #endif
6dd9344cfc41bc David Daney 2010-02-10 142 goto bad_area;
6dd9344cfc41bc David Daney 2010-02-10 143 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 144 } else {
5093c5872be3a0 Anshuman Khandual 2020-04-06 145 if (unlikely(!vma_is_accessible(vma)))
^1da177e4c3f41 Linus Torvalds 2005-04-16 146 goto bad_area;
^1da177e4c3f41 Linus Torvalds 2005-04-16 147 }
6dd9344cfc41bc David Daney 2010-02-10 148 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 149
^1da177e4c3f41 Linus Torvalds 2005-04-16 150 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 151 * If for any reason at all we couldn't handle the fault,
^1da177e4c3f41 Linus Torvalds 2005-04-16 152 * make sure we exit gracefully rather than endlessly redo
^1da177e4c3f41 Linus Torvalds 2005-04-16 153 * the fault.
^1da177e4c3f41 Linus Torvalds 2005-04-16 154 */
dcddffd41d3f1d Kirill A. Shutemov 2016-07-26 155 fault = handle_mm_fault(vma, address, flags);
43ca4957a15a12 Kautuk Consul 2011-12-23 156
4ef873226ceb9c Peter Xu 2020-04-01 157 if (fault_signal_pending(fault, regs))
43ca4957a15a12 Kautuk Consul 2011-12-23 158 return;
43ca4957a15a12 Kautuk Consul 2011-12-23 159
a8b0ca17b80e92 Peter Zijlstra 2011-06-27 160 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
83c54070ee1a2d Nick Piggin 2007-07-19 161 if (unlikely(fault & VM_FAULT_ERROR)) {
83c54070ee1a2d Nick Piggin 2007-07-19 162 if (fault & VM_FAULT_OOM)
^1da177e4c3f41 Linus Torvalds 2005-04-16 163 goto out_of_memory;
33692f27597fca Linus Torvalds 2015-01-29 164 else if (fault & VM_FAULT_SIGSEGV)
33692f27597fca Linus Torvalds 2015-01-29 165 goto bad_area;
83c54070ee1a2d Nick Piggin 2007-07-19 166 else if (fault & VM_FAULT_SIGBUS)
83c54070ee1a2d Nick Piggin 2007-07-19 167 goto do_sigbus;
^1da177e4c3f41 Linus Torvalds 2005-04-16 168 BUG();
^1da177e4c3f41 Linus Torvalds 2005-04-16 169 }
43ca4957a15a12 Kautuk Consul 2011-12-23 170 if (flags & FAULT_FLAG_ALLOW_RETRY) {
7f788d2d530858 Dengcheng Zhu 2010-10-12 171 if (fault & VM_FAULT_MAJOR) {
43ca4957a15a12 Kautuk Consul 2011-12-23 172 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1,
43ca4957a15a12 Kautuk Consul 2011-12-23 173 regs, address);
83c54070ee1a2d Nick Piggin 2007-07-19 174 tsk->maj_flt++;
7f788d2d530858 Dengcheng Zhu 2010-10-12 175 } else {
43ca4957a15a12 Kautuk Consul 2011-12-23 176 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1,
43ca4957a15a12 Kautuk Consul 2011-12-23 177 regs, address);
83c54070ee1a2d Nick Piggin 2007-07-19 178 tsk->min_flt++;
7f788d2d530858 Dengcheng Zhu 2010-10-12 179 }
43ca4957a15a12 Kautuk Consul 2011-12-23 180 if (fault & VM_FAULT_RETRY) {
45cac65b0fcd28 Shaohua Li 2012-10-08 181 flags |= FAULT_FLAG_TRIED;
43ca4957a15a12 Kautuk Consul 2011-12-23 182
43ca4957a15a12 Kautuk Consul 2011-12-23 183 /*
43ca4957a15a12 Kautuk Consul 2011-12-23 184 * No need to up_read(&mm->mmap_sem) as we would
43ca4957a15a12 Kautuk Consul 2011-12-23 185 * have already released it in __lock_page_or_retry
43ca4957a15a12 Kautuk Consul 2011-12-23 186 * in mm/filemap.c.
43ca4957a15a12 Kautuk Consul 2011-12-23 187 */
43ca4957a15a12 Kautuk Consul 2011-12-23 188
43ca4957a15a12 Kautuk Consul 2011-12-23 189 goto retry;
43ca4957a15a12 Kautuk Consul 2011-12-23 190 }
43ca4957a15a12 Kautuk Consul 2011-12-23 191 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 192
89154dd5313f77 Michel Lespinasse 2020-06-08 193 mmap_read_unlock(mm);
^1da177e4c3f41 Linus Torvalds 2005-04-16 194 return;
^1da177e4c3f41 Linus Torvalds 2005-04-16 195
^1da177e4c3f41 Linus Torvalds 2005-04-16 196 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 197 * Something tried to access memory that isn't in our memory map..
^1da177e4c3f41 Linus Torvalds 2005-04-16 198 * Fix it, but check if it's kernel or user first..
^1da177e4c3f41 Linus Torvalds 2005-04-16 199 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 200 bad_area:
89154dd5313f77 Michel Lespinasse 2020-06-08 201 mmap_read_unlock(mm);
^1da177e4c3f41 Linus Torvalds 2005-04-16 202
^1da177e4c3f41 Linus Torvalds 2005-04-16 203 bad_area_nosemaphore:
^1da177e4c3f41 Linus Torvalds 2005-04-16 204 /* User mode accesses just cause a SIGSEGV */
^1da177e4c3f41 Linus Torvalds 2005-04-16 205 if (user_mode(regs)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 206 tsk->thread.cp0_badvaddr = address;
^1da177e4c3f41 Linus Torvalds 2005-04-16 207 tsk->thread.error_code = write;
d79d853df12655 Markos Chandras 2015-01-21 208 if (show_unhandled_signals &&
d79d853df12655 Markos Chandras 2015-01-21 209 unhandled_signal(tsk, SIGSEGV) &&
d79d853df12655 Markos Chandras 2015-01-21 210 __ratelimit(&ratelimit_state)) {
2a872a5dcec705 Matt Redfearn 2016-11-09 211 pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 212 tsk->comm,
^1da177e4c3f41 Linus Torvalds 2005-04-16 213 write ? "write access to" : "read access from",
d79d853df12655 Markos Chandras 2015-01-21 214 field, address);
d79d853df12655 Markos Chandras 2015-01-21 215 pr_info("epc = %0*lx in", field,
d79d853df12655 Markos Chandras 2015-01-21 216 (unsigned long) regs->cp0_epc);
2a872a5dcec705 Matt Redfearn 2016-11-09 217 print_vma_addr(KERN_CONT " ", regs->cp0_epc);
2a872a5dcec705 Matt Redfearn 2016-11-09 218 pr_cont("\n");
d79d853df12655 Markos Chandras 2015-01-21 219 pr_info("ra = %0*lx in", field,
d79d853df12655 Markos Chandras 2015-01-21 220 (unsigned long) regs->regs[31]);
2a872a5dcec705 Matt Redfearn 2016-11-09 221 print_vma_addr(KERN_CONT " ", regs->regs[31]);
2a872a5dcec705 Matt Redfearn 2016-11-09 222 pr_cont("\n");
d79d853df12655 Markos Chandras 2015-01-21 223 }
e3b28831c18c6c Ralf Baechle 2015-07-28 224 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
2e1661d2673667 Eric W. Biederman 2019-05-23 225 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 226 return;
^1da177e4c3f41 Linus Torvalds 2005-04-16 227 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 228
^1da177e4c3f41 Linus Torvalds 2005-04-16 229 no_context:
^1da177e4c3f41 Linus Torvalds 2005-04-16 230 /* Are we prepared to handle this kernel fault? */
^1da177e4c3f41 Linus Torvalds 2005-04-16 231 if (fixup_exception(regs)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 232 current->thread.cp0_baduaddr = address;
^1da177e4c3f41 Linus Torvalds 2005-04-16 233 return;
^1da177e4c3f41 Linus Torvalds 2005-04-16 234 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 235
^1da177e4c3f41 Linus Torvalds 2005-04-16 236 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 237 * Oops. The kernel tried to access some bad page. We'll have to
^1da177e4c3f41 Linus Torvalds 2005-04-16 238 * terminate things with extreme prejudice.
^1da177e4c3f41 Linus Torvalds 2005-04-16 239 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 240 bust_spinlocks(1);
^1da177e4c3f41 Linus Torvalds 2005-04-16 241
^1da177e4c3f41 Linus Torvalds 2005-04-16 242 printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at "
^1da177e4c3f41 Linus Torvalds 2005-04-16 243 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
d6f703602fee8f Ralf Baechle 2007-03-29 244 raw_smp_processor_id(), field, address, field, regs->cp0_epc,
^1da177e4c3f41 Linus Torvalds 2005-04-16 245 field, regs->regs[31]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 246 die("Oops", regs);
^1da177e4c3f41 Linus Torvalds 2005-04-16 247
c7c1e3846bac1e Ralf Baechle 2009-01-12 248 out_of_memory:
^1da177e4c3f41 Linus Torvalds 2005-04-16 249 /*
c7c1e3846bac1e Ralf Baechle 2009-01-12 250 * We ran out of memory, call the OOM killer, and return the userspace
c7c1e3846bac1e Ralf Baechle 2009-01-12 251 * (which will retry the fault, or kill us if we got oom-killed).
^1da177e4c3f41 Linus Torvalds 2005-04-16 252 */
89154dd5313f77 Michel Lespinasse 2020-06-08 253 mmap_read_unlock(mm);
871341023c771a Johannes Weiner 2013-09-12 254 if (!user_mode(regs))
871341023c771a Johannes Weiner 2013-09-12 255 goto no_context;
c7c1e3846bac1e Ralf Baechle 2009-01-12 256 pagefault_out_of_memory();
c7c1e3846bac1e Ralf Baechle 2009-01-12 257 return;
^1da177e4c3f41 Linus Torvalds 2005-04-16 258
^1da177e4c3f41 Linus Torvalds 2005-04-16 259 do_sigbus:
89154dd5313f77 Michel Lespinasse 2020-06-08 260 mmap_read_unlock(mm);
^1da177e4c3f41 Linus Torvalds 2005-04-16 261
^1da177e4c3f41 Linus Torvalds 2005-04-16 262 /* Kernel mode? Handle exceptions or die */
^1da177e4c3f41 Linus Torvalds 2005-04-16 263 if (!user_mode(regs))
^1da177e4c3f41 Linus Torvalds 2005-04-16 264 goto no_context;
72f941af88a543 Paul Burton 2017-03-30 265
^1da177e4c3f41 Linus Torvalds 2005-04-16 266 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 267 * Send a sigbus, regardless of whether we were in kernel
^1da177e4c3f41 Linus Torvalds 2005-04-16 268 * or user mode.
^1da177e4c3f41 Linus Torvalds 2005-04-16 269 */
41c594ab65fc89 Ralf Baechle 2006-04-05 270 #if 0
41c594ab65fc89 Ralf Baechle 2006-04-05 271 printk("do_page_fault() #3: sending SIGBUS to %s for "
41c594ab65fc89 Ralf Baechle 2006-04-05 272 "invalid %s\n%0*lx (epc == %0*lx, ra == %0*lx)\n",
41c594ab65fc89 Ralf Baechle 2006-04-05 273 tsk->comm,
41c594ab65fc89 Ralf Baechle 2006-04-05 274 write ? "write access to" : "read access from",
41c594ab65fc89 Ralf Baechle 2006-04-05 275 field, address,
41c594ab65fc89 Ralf Baechle 2006-04-05 276 field, (unsigned long) regs->cp0_epc,
41c594ab65fc89 Ralf Baechle 2006-04-05 277 field, (unsigned long) regs->regs[31]);
41c594ab65fc89 Ralf Baechle 2006-04-05 278 #endif
e3b28831c18c6c Ralf Baechle 2015-07-28 279 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
^1da177e4c3f41 Linus Torvalds 2005-04-16 280 tsk->thread.cp0_badvaddr = address;
2e1661d2673667 Eric W. Biederman 2019-05-23 281 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 282
^1da177e4c3f41 Linus Torvalds 2005-04-16 283 return;
2ca2ebfd952d03 David Daney 2009-09-02 284 #ifndef CONFIG_64BIT
^1da177e4c3f41 Linus Torvalds 2005-04-16 285 vmalloc_fault:
^1da177e4c3f41 Linus Torvalds 2005-04-16 286 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 287 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 288 * Synchronize this task's top level page-table
^1da177e4c3f41 Linus Torvalds 2005-04-16 289 * with the 'reference' page table.
^1da177e4c3f41 Linus Torvalds 2005-04-16 290 *
^1da177e4c3f41 Linus Torvalds 2005-04-16 291 * Do _not_ use "tsk" here. We might be inside
^1da177e4c3f41 Linus Torvalds 2005-04-16 292 * an interrupt in the middle of a task switch..
^1da177e4c3f41 Linus Torvalds 2005-04-16 293 */
31168f033e3751 Mike Rapoport 2019-11-21 294 int offset = pgd_index(address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 295 pgd_t *pgd, *pgd_k;
2bee1b58484f03 Mike Rapoport 2019-11-21 296 p4d_t *p4d, *p4d_k;
c6e8b587718c48 Ralf Baechle 2005-02-10 297 pud_t *pud, *pud_k;
^1da177e4c3f41 Linus Torvalds 2005-04-16 298 pmd_t *pmd, *pmd_k;
^1da177e4c3f41 Linus Torvalds 2005-04-16 299 pte_t *pte_k;
^1da177e4c3f41 Linus Torvalds 2005-04-16 300
d6f703602fee8f Ralf Baechle 2007-03-29 301 pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset;
^1da177e4c3f41 Linus Torvalds 2005-04-16 302 pgd_k = init_mm.pgd + offset;
^1da177e4c3f41 Linus Torvalds 2005-04-16 303
^1da177e4c3f41 Linus Torvalds 2005-04-16 304 if (!pgd_present(*pgd_k))
^1da177e4c3f41 Linus Torvalds 2005-04-16 305 goto no_context;
^1da177e4c3f41 Linus Torvalds 2005-04-16 306 set_pgd(pgd, *pgd_k);
^1da177e4c3f41 Linus Torvalds 2005-04-16 307
2bee1b58484f03 Mike Rapoport 2019-11-21 308 p4d = p4d_offset(pgd, address);
2bee1b58484f03 Mike Rapoport 2019-11-21 309 p4d_k = p4d_offset(pgd_k, address);
2bee1b58484f03 Mike Rapoport 2019-11-21 310 if (!p4d_present(*p4d_k))
2bee1b58484f03 Mike Rapoport 2019-11-21 311 goto no_context;
2bee1b58484f03 Mike Rapoport 2019-11-21 312
2bee1b58484f03 Mike Rapoport 2019-11-21 313 pud = pud_offset(p4d, address);
2bee1b58484f03 Mike Rapoport 2019-11-21 314 pud_k = pud_offset(p4d_k, address);
c6e8b587718c48 Ralf Baechle 2005-02-10 315 if (!pud_present(*pud_k))
c6e8b587718c48 Ralf Baechle 2005-02-10 316 goto no_context;
c6e8b587718c48 Ralf Baechle 2005-02-10 317
c6e8b587718c48 Ralf Baechle 2005-02-10 318 pmd = pmd_offset(pud, address);
c6e8b587718c48 Ralf Baechle 2005-02-10 319 pmd_k = pmd_offset(pud_k, address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 320 if (!pmd_present(*pmd_k))
^1da177e4c3f41 Linus Torvalds 2005-04-16 321 goto no_context;
^1da177e4c3f41 Linus Torvalds 2005-04-16 322 set_pmd(pmd, *pmd_k);
^1da177e4c3f41 Linus Torvalds 2005-04-16 323
^1da177e4c3f41 Linus Torvalds 2005-04-16 324 pte_k = pte_offset_kernel(pmd_k, address);
^1da177e4c3f41 Linus Torvalds 2005-04-16 325 if (!pte_present(*pte_k))
^1da177e4c3f41 Linus Torvalds 2005-04-16 326 goto no_context;
^1da177e4c3f41 Linus Torvalds 2005-04-16 @327 return;
^1da177e4c3f41 Linus Torvalds 2005-04-16 328 }
2ca2ebfd952d03 David Daney 2009-09-02 329 #endif
^1da177e4c3f41 Linus Torvalds 2005-04-16 330 }
c3fc5cd5c5a5f4 Ralf Baechle 2013-05-29 331
:::::: The code at line 327 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
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: 32439 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock'.
@ 2021-01-08 18:22 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-01-08 18:22 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 20324 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Michel Lespinasse <walken@google.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
CC: Vlastimil Babka <vbabka@suse.cz>
CC: Davidlohr Bueso <dbueso@suse.de>
CC: Daniel Jordan <daniel.m.jordan@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f5e6c330254ae691f6d7befe61c786eb5056007e
commit: da1c55f1b272f4bd54671d459b39ea7b54944ef9 mmap locking API: rename mmap_sem to mmap_lock
date: 7 months ago
:::::: branch date: 22 hours ago
:::::: commit date: 7 months ago
config: mips-randconfig-m031-20210108 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock'.
vim +327 arch/mips/mm/fault.c
^1da177e4c3f415 Linus Torvalds 2005-04-16 89
^1da177e4c3f415 Linus Torvalds 2005-04-16 90 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 91 * If we're in an interrupt or have no user
^1da177e4c3f415 Linus Torvalds 2005-04-16 92 * context, we must not take the fault..
^1da177e4c3f415 Linus Torvalds 2005-04-16 93 */
70ffdb9393a7264 David Hildenbrand 2015-05-11 94 if (faulthandler_disabled() || !mm)
^1da177e4c3f415 Linus Torvalds 2005-04-16 95 goto bad_area_nosemaphore;
^1da177e4c3f415 Linus Torvalds 2005-04-16 96
759496ba6407c69 Johannes Weiner 2013-09-12 97 if (user_mode(regs))
759496ba6407c69 Johannes Weiner 2013-09-12 98 flags |= FAULT_FLAG_USER;
43ca4957a15a120 Kautuk Consul 2011-12-23 99 retry:
89154dd5313f774 Michel Lespinasse 2020-06-08 100 mmap_read_lock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 101 vma = find_vma(mm, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 102 if (!vma)
^1da177e4c3f415 Linus Torvalds 2005-04-16 103 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 104 if (vma->vm_start <= address)
^1da177e4c3f415 Linus Torvalds 2005-04-16 105 goto good_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 106 if (!(vma->vm_flags & VM_GROWSDOWN))
^1da177e4c3f415 Linus Torvalds 2005-04-16 107 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 108 if (expand_stack(vma, address))
^1da177e4c3f415 Linus Torvalds 2005-04-16 109 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 110 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 111 * Ok, we have a good vm_area for this memory access, so
^1da177e4c3f415 Linus Torvalds 2005-04-16 112 * we can handle it..
^1da177e4c3f415 Linus Torvalds 2005-04-16 113 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 114 good_area:
f43a54a0d9168de Eric W. Biederman 2018-04-15 115 si_code = SEGV_ACCERR;
^1da177e4c3f415 Linus Torvalds 2005-04-16 116
^1da177e4c3f415 Linus Torvalds 2005-04-16 117 if (write) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 118 if (!(vma->vm_flags & VM_WRITE))
^1da177e4c3f415 Linus Torvalds 2005-04-16 119 goto bad_area;
759496ba6407c69 Johannes Weiner 2013-09-12 120 flags |= FAULT_FLAG_WRITE;
6dd9344cfc41bcc David Daney 2010-02-10 121 } else {
05857c64ecf8972 Steven J. Hill 2012-09-13 122 if (cpu_has_rixi) {
6dd9344cfc41bcc David Daney 2010-02-10 123 if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) {
6dd9344cfc41bcc David Daney 2010-02-10 124 #if 0
6dd9344cfc41bcc David Daney 2010-02-10 125 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n",
6dd9344cfc41bcc David Daney 2010-02-10 126 raw_smp_processor_id(),
6dd9344cfc41bcc David Daney 2010-02-10 127 current->comm, current->pid,
6dd9344cfc41bcc David Daney 2010-02-10 128 field, address, write,
6dd9344cfc41bcc David Daney 2010-02-10 129 field, regs->cp0_epc);
6dd9344cfc41bcc David Daney 2010-02-10 130 #endif
6dd9344cfc41bcc David Daney 2010-02-10 131 goto bad_area;
6dd9344cfc41bcc David Daney 2010-02-10 132 }
e070dab73523bcb Ralf Baechle 2015-07-23 133 if (!(vma->vm_flags & VM_READ) &&
e070dab73523bcb Ralf Baechle 2015-07-23 134 exception_epc(regs) != address) {
6dd9344cfc41bcc David Daney 2010-02-10 135 #if 0
6dd9344cfc41bcc David Daney 2010-02-10 136 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
6dd9344cfc41bcc David Daney 2010-02-10 137 raw_smp_processor_id(),
6dd9344cfc41bcc David Daney 2010-02-10 138 current->comm, current->pid,
6dd9344cfc41bcc David Daney 2010-02-10 139 field, address, write,
6dd9344cfc41bcc David Daney 2010-02-10 140 field, regs->cp0_epc);
6dd9344cfc41bcc David Daney 2010-02-10 141 #endif
6dd9344cfc41bcc David Daney 2010-02-10 142 goto bad_area;
6dd9344cfc41bcc David Daney 2010-02-10 143 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 144 } else {
5093c5872be3a04 Anshuman Khandual 2020-04-06 145 if (unlikely(!vma_is_accessible(vma)))
^1da177e4c3f415 Linus Torvalds 2005-04-16 146 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 147 }
6dd9344cfc41bcc David Daney 2010-02-10 148 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 149
^1da177e4c3f415 Linus Torvalds 2005-04-16 150 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 151 * If for any reason at all we couldn't handle the fault,
^1da177e4c3f415 Linus Torvalds 2005-04-16 152 * make sure we exit gracefully rather than endlessly redo
^1da177e4c3f415 Linus Torvalds 2005-04-16 153 * the fault.
^1da177e4c3f415 Linus Torvalds 2005-04-16 154 */
dcddffd41d3f1d3 Kirill A. Shutemov 2016-07-26 155 fault = handle_mm_fault(vma, address, flags);
43ca4957a15a120 Kautuk Consul 2011-12-23 156
4ef873226ceb9c7 Peter Xu 2020-04-01 157 if (fault_signal_pending(fault, regs))
43ca4957a15a120 Kautuk Consul 2011-12-23 158 return;
43ca4957a15a120 Kautuk Consul 2011-12-23 159
a8b0ca17b80e92f Peter Zijlstra 2011-06-27 160 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 161 if (unlikely(fault & VM_FAULT_ERROR)) {
83c54070ee1a2d0 Nick Piggin 2007-07-19 162 if (fault & VM_FAULT_OOM)
^1da177e4c3f415 Linus Torvalds 2005-04-16 163 goto out_of_memory;
33692f27597fcab Linus Torvalds 2015-01-29 164 else if (fault & VM_FAULT_SIGSEGV)
33692f27597fcab Linus Torvalds 2015-01-29 165 goto bad_area;
83c54070ee1a2d0 Nick Piggin 2007-07-19 166 else if (fault & VM_FAULT_SIGBUS)
83c54070ee1a2d0 Nick Piggin 2007-07-19 167 goto do_sigbus;
^1da177e4c3f415 Linus Torvalds 2005-04-16 168 BUG();
^1da177e4c3f415 Linus Torvalds 2005-04-16 169 }
43ca4957a15a120 Kautuk Consul 2011-12-23 170 if (flags & FAULT_FLAG_ALLOW_RETRY) {
7f788d2d5308581 Dengcheng Zhu 2010-10-12 171 if (fault & VM_FAULT_MAJOR) {
43ca4957a15a120 Kautuk Consul 2011-12-23 172 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1,
43ca4957a15a120 Kautuk Consul 2011-12-23 173 regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 174 tsk->maj_flt++;
7f788d2d5308581 Dengcheng Zhu 2010-10-12 175 } else {
43ca4957a15a120 Kautuk Consul 2011-12-23 176 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1,
43ca4957a15a120 Kautuk Consul 2011-12-23 177 regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 178 tsk->min_flt++;
7f788d2d5308581 Dengcheng Zhu 2010-10-12 179 }
43ca4957a15a120 Kautuk Consul 2011-12-23 180 if (fault & VM_FAULT_RETRY) {
45cac65b0fcd287 Shaohua Li 2012-10-08 181 flags |= FAULT_FLAG_TRIED;
43ca4957a15a120 Kautuk Consul 2011-12-23 182
43ca4957a15a120 Kautuk Consul 2011-12-23 183 /*
43ca4957a15a120 Kautuk Consul 2011-12-23 184 * No need to up_read(&mm->mmap_sem) as we would
43ca4957a15a120 Kautuk Consul 2011-12-23 185 * have already released it in __lock_page_or_retry
43ca4957a15a120 Kautuk Consul 2011-12-23 186 * in mm/filemap.c.
43ca4957a15a120 Kautuk Consul 2011-12-23 187 */
43ca4957a15a120 Kautuk Consul 2011-12-23 188
43ca4957a15a120 Kautuk Consul 2011-12-23 189 goto retry;
43ca4957a15a120 Kautuk Consul 2011-12-23 190 }
43ca4957a15a120 Kautuk Consul 2011-12-23 191 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 192
89154dd5313f774 Michel Lespinasse 2020-06-08 193 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 194 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 195
^1da177e4c3f415 Linus Torvalds 2005-04-16 196 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 197 * Something tried to access memory that isn't in our memory map..
^1da177e4c3f415 Linus Torvalds 2005-04-16 198 * Fix it, but check if it's kernel or user first..
^1da177e4c3f415 Linus Torvalds 2005-04-16 199 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 200 bad_area:
89154dd5313f774 Michel Lespinasse 2020-06-08 201 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 202
^1da177e4c3f415 Linus Torvalds 2005-04-16 203 bad_area_nosemaphore:
^1da177e4c3f415 Linus Torvalds 2005-04-16 204 /* User mode accesses just cause a SIGSEGV */
^1da177e4c3f415 Linus Torvalds 2005-04-16 205 if (user_mode(regs)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 206 tsk->thread.cp0_badvaddr = address;
^1da177e4c3f415 Linus Torvalds 2005-04-16 207 tsk->thread.error_code = write;
d79d853df126553 Markos Chandras 2015-01-21 208 if (show_unhandled_signals &&
d79d853df126553 Markos Chandras 2015-01-21 209 unhandled_signal(tsk, SIGSEGV) &&
d79d853df126553 Markos Chandras 2015-01-21 210 __ratelimit(&ratelimit_state)) {
2a872a5dcec7052 Matt Redfearn 2016-11-09 211 pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
^1da177e4c3f415 Linus Torvalds 2005-04-16 212 tsk->comm,
^1da177e4c3f415 Linus Torvalds 2005-04-16 213 write ? "write access to" : "read access from",
d79d853df126553 Markos Chandras 2015-01-21 214 field, address);
d79d853df126553 Markos Chandras 2015-01-21 215 pr_info("epc = %0*lx in", field,
d79d853df126553 Markos Chandras 2015-01-21 216 (unsigned long) regs->cp0_epc);
2a872a5dcec7052 Matt Redfearn 2016-11-09 217 print_vma_addr(KERN_CONT " ", regs->cp0_epc);
2a872a5dcec7052 Matt Redfearn 2016-11-09 218 pr_cont("\n");
d79d853df126553 Markos Chandras 2015-01-21 219 pr_info("ra = %0*lx in", field,
d79d853df126553 Markos Chandras 2015-01-21 220 (unsigned long) regs->regs[31]);
2a872a5dcec7052 Matt Redfearn 2016-11-09 221 print_vma_addr(KERN_CONT " ", regs->regs[31]);
2a872a5dcec7052 Matt Redfearn 2016-11-09 222 pr_cont("\n");
d79d853df126553 Markos Chandras 2015-01-21 223 }
e3b28831c18c6c9 Ralf Baechle 2015-07-28 224 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
2e1661d2673667d Eric W. Biederman 2019-05-23 225 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 226 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 227 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 228
^1da177e4c3f415 Linus Torvalds 2005-04-16 229 no_context:
^1da177e4c3f415 Linus Torvalds 2005-04-16 230 /* Are we prepared to handle this kernel fault? */
^1da177e4c3f415 Linus Torvalds 2005-04-16 231 if (fixup_exception(regs)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 232 current->thread.cp0_baduaddr = address;
^1da177e4c3f415 Linus Torvalds 2005-04-16 233 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 234 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 235
^1da177e4c3f415 Linus Torvalds 2005-04-16 236 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 237 * Oops. The kernel tried to access some bad page. We'll have to
^1da177e4c3f415 Linus Torvalds 2005-04-16 238 * terminate things with extreme prejudice.
^1da177e4c3f415 Linus Torvalds 2005-04-16 239 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 240 bust_spinlocks(1);
^1da177e4c3f415 Linus Torvalds 2005-04-16 241
^1da177e4c3f415 Linus Torvalds 2005-04-16 242 printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at "
^1da177e4c3f415 Linus Torvalds 2005-04-16 243 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
d6f703602fee8f8 Ralf Baechle 2007-03-29 244 raw_smp_processor_id(), field, address, field, regs->cp0_epc,
^1da177e4c3f415 Linus Torvalds 2005-04-16 245 field, regs->regs[31]);
^1da177e4c3f415 Linus Torvalds 2005-04-16 246 die("Oops", regs);
^1da177e4c3f415 Linus Torvalds 2005-04-16 247
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 248 out_of_memory:
^1da177e4c3f415 Linus Torvalds 2005-04-16 249 /*
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 250 * We ran out of memory, call the OOM killer, and return the userspace
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 251 * (which will retry the fault, or kill us if we got oom-killed).
^1da177e4c3f415 Linus Torvalds 2005-04-16 252 */
89154dd5313f774 Michel Lespinasse 2020-06-08 253 mmap_read_unlock(mm);
871341023c771ad Johannes Weiner 2013-09-12 254 if (!user_mode(regs))
871341023c771ad Johannes Weiner 2013-09-12 255 goto no_context;
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 256 pagefault_out_of_memory();
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 257 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 258
^1da177e4c3f415 Linus Torvalds 2005-04-16 259 do_sigbus:
89154dd5313f774 Michel Lespinasse 2020-06-08 260 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 261
^1da177e4c3f415 Linus Torvalds 2005-04-16 262 /* Kernel mode? Handle exceptions or die */
^1da177e4c3f415 Linus Torvalds 2005-04-16 263 if (!user_mode(regs))
^1da177e4c3f415 Linus Torvalds 2005-04-16 264 goto no_context;
72f941af88a543e Paul Burton 2017-03-30 265
^1da177e4c3f415 Linus Torvalds 2005-04-16 266 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 267 * Send a sigbus, regardless of whether we were in kernel
^1da177e4c3f415 Linus Torvalds 2005-04-16 268 * or user mode.
^1da177e4c3f415 Linus Torvalds 2005-04-16 269 */
41c594ab65fc895 Ralf Baechle 2006-04-05 270 #if 0
41c594ab65fc895 Ralf Baechle 2006-04-05 271 printk("do_page_fault() #3: sending SIGBUS to %s for "
41c594ab65fc895 Ralf Baechle 2006-04-05 272 "invalid %s\n%0*lx (epc == %0*lx, ra == %0*lx)\n",
41c594ab65fc895 Ralf Baechle 2006-04-05 273 tsk->comm,
41c594ab65fc895 Ralf Baechle 2006-04-05 274 write ? "write access to" : "read access from",
41c594ab65fc895 Ralf Baechle 2006-04-05 275 field, address,
41c594ab65fc895 Ralf Baechle 2006-04-05 276 field, (unsigned long) regs->cp0_epc,
41c594ab65fc895 Ralf Baechle 2006-04-05 277 field, (unsigned long) regs->regs[31]);
41c594ab65fc895 Ralf Baechle 2006-04-05 278 #endif
e3b28831c18c6c9 Ralf Baechle 2015-07-28 279 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
^1da177e4c3f415 Linus Torvalds 2005-04-16 280 tsk->thread.cp0_badvaddr = address;
2e1661d2673667d Eric W. Biederman 2019-05-23 281 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 282
^1da177e4c3f415 Linus Torvalds 2005-04-16 283 return;
2ca2ebfd952d033 David Daney 2009-09-02 284 #ifndef CONFIG_64BIT
^1da177e4c3f415 Linus Torvalds 2005-04-16 285 vmalloc_fault:
^1da177e4c3f415 Linus Torvalds 2005-04-16 286 {
^1da177e4c3f415 Linus Torvalds 2005-04-16 287 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 288 * Synchronize this task's top level page-table
^1da177e4c3f415 Linus Torvalds 2005-04-16 289 * with the 'reference' page table.
^1da177e4c3f415 Linus Torvalds 2005-04-16 290 *
^1da177e4c3f415 Linus Torvalds 2005-04-16 291 * Do _not_ use "tsk" here. We might be inside
^1da177e4c3f415 Linus Torvalds 2005-04-16 292 * an interrupt in the middle of a task switch..
^1da177e4c3f415 Linus Torvalds 2005-04-16 293 */
31168f033e3751d Mike Rapoport 2019-11-21 294 int offset = pgd_index(address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 295 pgd_t *pgd, *pgd_k;
2bee1b58484f036 Mike Rapoport 2019-11-21 296 p4d_t *p4d, *p4d_k;
c6e8b587718c486 Ralf Baechle 2005-02-10 297 pud_t *pud, *pud_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 298 pmd_t *pmd, *pmd_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 299 pte_t *pte_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 300
d6f703602fee8f8 Ralf Baechle 2007-03-29 301 pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset;
^1da177e4c3f415 Linus Torvalds 2005-04-16 302 pgd_k = init_mm.pgd + offset;
^1da177e4c3f415 Linus Torvalds 2005-04-16 303
^1da177e4c3f415 Linus Torvalds 2005-04-16 304 if (!pgd_present(*pgd_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 305 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 306 set_pgd(pgd, *pgd_k);
^1da177e4c3f415 Linus Torvalds 2005-04-16 307
2bee1b58484f036 Mike Rapoport 2019-11-21 308 p4d = p4d_offset(pgd, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 309 p4d_k = p4d_offset(pgd_k, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 310 if (!p4d_present(*p4d_k))
2bee1b58484f036 Mike Rapoport 2019-11-21 311 goto no_context;
2bee1b58484f036 Mike Rapoport 2019-11-21 312
2bee1b58484f036 Mike Rapoport 2019-11-21 313 pud = pud_offset(p4d, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 314 pud_k = pud_offset(p4d_k, address);
c6e8b587718c486 Ralf Baechle 2005-02-10 315 if (!pud_present(*pud_k))
c6e8b587718c486 Ralf Baechle 2005-02-10 316 goto no_context;
c6e8b587718c486 Ralf Baechle 2005-02-10 317
c6e8b587718c486 Ralf Baechle 2005-02-10 318 pmd = pmd_offset(pud, address);
c6e8b587718c486 Ralf Baechle 2005-02-10 319 pmd_k = pmd_offset(pud_k, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 320 if (!pmd_present(*pmd_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 321 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 322 set_pmd(pmd, *pmd_k);
^1da177e4c3f415 Linus Torvalds 2005-04-16 323
^1da177e4c3f415 Linus Torvalds 2005-04-16 324 pte_k = pte_offset_kernel(pmd_k, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 325 if (!pte_present(*pte_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 326 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 @327 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 328 }
2ca2ebfd952d033 David Daney 2009-09-02 329 #endif
^1da177e4c3f415 Linus Torvalds 2005-04-16 330 }
c3fc5cd5c5a5f47 Ralf Baechle 2013-05-29 331
:::::: The code at line 327 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
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: 22398 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns '&mm->mmap_lock'.
@ 2021-04-23 20:09 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-04-23 20:09 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 20324 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Michel Lespinasse <walken@google.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
CC: Vlastimil Babka <vbabka@suse.cz>
CC: Davidlohr Bueso <dbueso@suse.de>
CC: Daniel Jordan <daniel.m.jordan@oracle.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5bfc75d92efd494db37f5c4c173d3639d4772966
commit: da1c55f1b272f4bd54671d459b39ea7b54944ef9 mmap locking API: rename mmap_sem to mmap_lock
date: 11 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 11 months ago
config: mips-randconfig-m031-20210423 (attached as .config)
compiler: mips-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns '&mm->mmap_lock'.
vim +327 arch/mips/mm/fault.c
^1da177e4c3f415 Linus Torvalds 2005-04-16 89
^1da177e4c3f415 Linus Torvalds 2005-04-16 90 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 91 * If we're in an interrupt or have no user
^1da177e4c3f415 Linus Torvalds 2005-04-16 92 * context, we must not take the fault..
^1da177e4c3f415 Linus Torvalds 2005-04-16 93 */
70ffdb9393a7264 David Hildenbrand 2015-05-11 94 if (faulthandler_disabled() || !mm)
^1da177e4c3f415 Linus Torvalds 2005-04-16 95 goto bad_area_nosemaphore;
^1da177e4c3f415 Linus Torvalds 2005-04-16 96
759496ba6407c69 Johannes Weiner 2013-09-12 97 if (user_mode(regs))
759496ba6407c69 Johannes Weiner 2013-09-12 98 flags |= FAULT_FLAG_USER;
43ca4957a15a120 Kautuk Consul 2011-12-23 99 retry:
89154dd5313f774 Michel Lespinasse 2020-06-08 100 mmap_read_lock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 101 vma = find_vma(mm, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 102 if (!vma)
^1da177e4c3f415 Linus Torvalds 2005-04-16 103 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 104 if (vma->vm_start <= address)
^1da177e4c3f415 Linus Torvalds 2005-04-16 105 goto good_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 106 if (!(vma->vm_flags & VM_GROWSDOWN))
^1da177e4c3f415 Linus Torvalds 2005-04-16 107 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 108 if (expand_stack(vma, address))
^1da177e4c3f415 Linus Torvalds 2005-04-16 109 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 110 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 111 * Ok, we have a good vm_area for this memory access, so
^1da177e4c3f415 Linus Torvalds 2005-04-16 112 * we can handle it..
^1da177e4c3f415 Linus Torvalds 2005-04-16 113 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 114 good_area:
f43a54a0d9168de Eric W. Biederman 2018-04-15 115 si_code = SEGV_ACCERR;
^1da177e4c3f415 Linus Torvalds 2005-04-16 116
^1da177e4c3f415 Linus Torvalds 2005-04-16 117 if (write) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 118 if (!(vma->vm_flags & VM_WRITE))
^1da177e4c3f415 Linus Torvalds 2005-04-16 119 goto bad_area;
759496ba6407c69 Johannes Weiner 2013-09-12 120 flags |= FAULT_FLAG_WRITE;
6dd9344cfc41bcc David Daney 2010-02-10 121 } else {
05857c64ecf8972 Steven J. Hill 2012-09-13 122 if (cpu_has_rixi) {
6dd9344cfc41bcc David Daney 2010-02-10 123 if (address == regs->cp0_epc && !(vma->vm_flags & VM_EXEC)) {
6dd9344cfc41bcc David Daney 2010-02-10 124 #if 0
6dd9344cfc41bcc David Daney 2010-02-10 125 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] XI violation\n",
6dd9344cfc41bcc David Daney 2010-02-10 126 raw_smp_processor_id(),
6dd9344cfc41bcc David Daney 2010-02-10 127 current->comm, current->pid,
6dd9344cfc41bcc David Daney 2010-02-10 128 field, address, write,
6dd9344cfc41bcc David Daney 2010-02-10 129 field, regs->cp0_epc);
6dd9344cfc41bcc David Daney 2010-02-10 130 #endif
6dd9344cfc41bcc David Daney 2010-02-10 131 goto bad_area;
6dd9344cfc41bcc David Daney 2010-02-10 132 }
e070dab73523bcb Ralf Baechle 2015-07-23 133 if (!(vma->vm_flags & VM_READ) &&
e070dab73523bcb Ralf Baechle 2015-07-23 134 exception_epc(regs) != address) {
6dd9344cfc41bcc David Daney 2010-02-10 135 #if 0
6dd9344cfc41bcc David Daney 2010-02-10 136 pr_notice("Cpu%d[%s:%d:%0*lx:%ld:%0*lx] RI violation\n",
6dd9344cfc41bcc David Daney 2010-02-10 137 raw_smp_processor_id(),
6dd9344cfc41bcc David Daney 2010-02-10 138 current->comm, current->pid,
6dd9344cfc41bcc David Daney 2010-02-10 139 field, address, write,
6dd9344cfc41bcc David Daney 2010-02-10 140 field, regs->cp0_epc);
6dd9344cfc41bcc David Daney 2010-02-10 141 #endif
6dd9344cfc41bcc David Daney 2010-02-10 142 goto bad_area;
6dd9344cfc41bcc David Daney 2010-02-10 143 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 144 } else {
5093c5872be3a04 Anshuman Khandual 2020-04-06 145 if (unlikely(!vma_is_accessible(vma)))
^1da177e4c3f415 Linus Torvalds 2005-04-16 146 goto bad_area;
^1da177e4c3f415 Linus Torvalds 2005-04-16 147 }
6dd9344cfc41bcc David Daney 2010-02-10 148 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 149
^1da177e4c3f415 Linus Torvalds 2005-04-16 150 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 151 * If for any reason at all we couldn't handle the fault,
^1da177e4c3f415 Linus Torvalds 2005-04-16 152 * make sure we exit gracefully rather than endlessly redo
^1da177e4c3f415 Linus Torvalds 2005-04-16 153 * the fault.
^1da177e4c3f415 Linus Torvalds 2005-04-16 154 */
dcddffd41d3f1d3 Kirill A. Shutemov 2016-07-26 155 fault = handle_mm_fault(vma, address, flags);
43ca4957a15a120 Kautuk Consul 2011-12-23 156
4ef873226ceb9c7 Peter Xu 2020-04-01 157 if (fault_signal_pending(fault, regs))
43ca4957a15a120 Kautuk Consul 2011-12-23 158 return;
43ca4957a15a120 Kautuk Consul 2011-12-23 159
a8b0ca17b80e92f Peter Zijlstra 2011-06-27 160 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 161 if (unlikely(fault & VM_FAULT_ERROR)) {
83c54070ee1a2d0 Nick Piggin 2007-07-19 162 if (fault & VM_FAULT_OOM)
^1da177e4c3f415 Linus Torvalds 2005-04-16 163 goto out_of_memory;
33692f27597fcab Linus Torvalds 2015-01-29 164 else if (fault & VM_FAULT_SIGSEGV)
33692f27597fcab Linus Torvalds 2015-01-29 165 goto bad_area;
83c54070ee1a2d0 Nick Piggin 2007-07-19 166 else if (fault & VM_FAULT_SIGBUS)
83c54070ee1a2d0 Nick Piggin 2007-07-19 167 goto do_sigbus;
^1da177e4c3f415 Linus Torvalds 2005-04-16 168 BUG();
^1da177e4c3f415 Linus Torvalds 2005-04-16 169 }
43ca4957a15a120 Kautuk Consul 2011-12-23 170 if (flags & FAULT_FLAG_ALLOW_RETRY) {
7f788d2d5308581 Dengcheng Zhu 2010-10-12 171 if (fault & VM_FAULT_MAJOR) {
43ca4957a15a120 Kautuk Consul 2011-12-23 172 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1,
43ca4957a15a120 Kautuk Consul 2011-12-23 173 regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 174 tsk->maj_flt++;
7f788d2d5308581 Dengcheng Zhu 2010-10-12 175 } else {
43ca4957a15a120 Kautuk Consul 2011-12-23 176 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1,
43ca4957a15a120 Kautuk Consul 2011-12-23 177 regs, address);
83c54070ee1a2d0 Nick Piggin 2007-07-19 178 tsk->min_flt++;
7f788d2d5308581 Dengcheng Zhu 2010-10-12 179 }
43ca4957a15a120 Kautuk Consul 2011-12-23 180 if (fault & VM_FAULT_RETRY) {
45cac65b0fcd287 Shaohua Li 2012-10-08 181 flags |= FAULT_FLAG_TRIED;
43ca4957a15a120 Kautuk Consul 2011-12-23 182
43ca4957a15a120 Kautuk Consul 2011-12-23 183 /*
43ca4957a15a120 Kautuk Consul 2011-12-23 184 * No need to up_read(&mm->mmap_sem) as we would
43ca4957a15a120 Kautuk Consul 2011-12-23 185 * have already released it in __lock_page_or_retry
43ca4957a15a120 Kautuk Consul 2011-12-23 186 * in mm/filemap.c.
43ca4957a15a120 Kautuk Consul 2011-12-23 187 */
43ca4957a15a120 Kautuk Consul 2011-12-23 188
43ca4957a15a120 Kautuk Consul 2011-12-23 189 goto retry;
43ca4957a15a120 Kautuk Consul 2011-12-23 190 }
43ca4957a15a120 Kautuk Consul 2011-12-23 191 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 192
89154dd5313f774 Michel Lespinasse 2020-06-08 193 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 194 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 195
^1da177e4c3f415 Linus Torvalds 2005-04-16 196 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 197 * Something tried to access memory that isn't in our memory map..
^1da177e4c3f415 Linus Torvalds 2005-04-16 198 * Fix it, but check if it's kernel or user first..
^1da177e4c3f415 Linus Torvalds 2005-04-16 199 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 200 bad_area:
89154dd5313f774 Michel Lespinasse 2020-06-08 201 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 202
^1da177e4c3f415 Linus Torvalds 2005-04-16 203 bad_area_nosemaphore:
^1da177e4c3f415 Linus Torvalds 2005-04-16 204 /* User mode accesses just cause a SIGSEGV */
^1da177e4c3f415 Linus Torvalds 2005-04-16 205 if (user_mode(regs)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 206 tsk->thread.cp0_badvaddr = address;
^1da177e4c3f415 Linus Torvalds 2005-04-16 207 tsk->thread.error_code = write;
d79d853df126553 Markos Chandras 2015-01-21 208 if (show_unhandled_signals &&
d79d853df126553 Markos Chandras 2015-01-21 209 unhandled_signal(tsk, SIGSEGV) &&
d79d853df126553 Markos Chandras 2015-01-21 210 __ratelimit(&ratelimit_state)) {
2a872a5dcec7052 Matt Redfearn 2016-11-09 211 pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
^1da177e4c3f415 Linus Torvalds 2005-04-16 212 tsk->comm,
^1da177e4c3f415 Linus Torvalds 2005-04-16 213 write ? "write access to" : "read access from",
d79d853df126553 Markos Chandras 2015-01-21 214 field, address);
d79d853df126553 Markos Chandras 2015-01-21 215 pr_info("epc = %0*lx in", field,
d79d853df126553 Markos Chandras 2015-01-21 216 (unsigned long) regs->cp0_epc);
2a872a5dcec7052 Matt Redfearn 2016-11-09 217 print_vma_addr(KERN_CONT " ", regs->cp0_epc);
2a872a5dcec7052 Matt Redfearn 2016-11-09 218 pr_cont("\n");
d79d853df126553 Markos Chandras 2015-01-21 219 pr_info("ra = %0*lx in", field,
d79d853df126553 Markos Chandras 2015-01-21 220 (unsigned long) regs->regs[31]);
2a872a5dcec7052 Matt Redfearn 2016-11-09 221 print_vma_addr(KERN_CONT " ", regs->regs[31]);
2a872a5dcec7052 Matt Redfearn 2016-11-09 222 pr_cont("\n");
d79d853df126553 Markos Chandras 2015-01-21 223 }
e3b28831c18c6c9 Ralf Baechle 2015-07-28 224 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
2e1661d2673667d Eric W. Biederman 2019-05-23 225 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 226 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 227 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 228
^1da177e4c3f415 Linus Torvalds 2005-04-16 229 no_context:
^1da177e4c3f415 Linus Torvalds 2005-04-16 230 /* Are we prepared to handle this kernel fault? */
^1da177e4c3f415 Linus Torvalds 2005-04-16 231 if (fixup_exception(regs)) {
^1da177e4c3f415 Linus Torvalds 2005-04-16 232 current->thread.cp0_baduaddr = address;
^1da177e4c3f415 Linus Torvalds 2005-04-16 233 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 234 }
^1da177e4c3f415 Linus Torvalds 2005-04-16 235
^1da177e4c3f415 Linus Torvalds 2005-04-16 236 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 237 * Oops. The kernel tried to access some bad page. We'll have to
^1da177e4c3f415 Linus Torvalds 2005-04-16 238 * terminate things with extreme prejudice.
^1da177e4c3f415 Linus Torvalds 2005-04-16 239 */
^1da177e4c3f415 Linus Torvalds 2005-04-16 240 bust_spinlocks(1);
^1da177e4c3f415 Linus Torvalds 2005-04-16 241
^1da177e4c3f415 Linus Torvalds 2005-04-16 242 printk(KERN_ALERT "CPU %d Unable to handle kernel paging request at "
^1da177e4c3f415 Linus Torvalds 2005-04-16 243 "virtual address %0*lx, epc == %0*lx, ra == %0*lx\n",
d6f703602fee8f8 Ralf Baechle 2007-03-29 244 raw_smp_processor_id(), field, address, field, regs->cp0_epc,
^1da177e4c3f415 Linus Torvalds 2005-04-16 245 field, regs->regs[31]);
^1da177e4c3f415 Linus Torvalds 2005-04-16 246 die("Oops", regs);
^1da177e4c3f415 Linus Torvalds 2005-04-16 247
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 248 out_of_memory:
^1da177e4c3f415 Linus Torvalds 2005-04-16 249 /*
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 250 * We ran out of memory, call the OOM killer, and return the userspace
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 251 * (which will retry the fault, or kill us if we got oom-killed).
^1da177e4c3f415 Linus Torvalds 2005-04-16 252 */
89154dd5313f774 Michel Lespinasse 2020-06-08 253 mmap_read_unlock(mm);
871341023c771ad Johannes Weiner 2013-09-12 254 if (!user_mode(regs))
871341023c771ad Johannes Weiner 2013-09-12 255 goto no_context;
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 256 pagefault_out_of_memory();
c7c1e3846bac1e4 Ralf Baechle 2009-01-12 257 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 258
^1da177e4c3f415 Linus Torvalds 2005-04-16 259 do_sigbus:
89154dd5313f774 Michel Lespinasse 2020-06-08 260 mmap_read_unlock(mm);
^1da177e4c3f415 Linus Torvalds 2005-04-16 261
^1da177e4c3f415 Linus Torvalds 2005-04-16 262 /* Kernel mode? Handle exceptions or die */
^1da177e4c3f415 Linus Torvalds 2005-04-16 263 if (!user_mode(regs))
^1da177e4c3f415 Linus Torvalds 2005-04-16 264 goto no_context;
72f941af88a543e Paul Burton 2017-03-30 265
^1da177e4c3f415 Linus Torvalds 2005-04-16 266 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 267 * Send a sigbus, regardless of whether we were in kernel
^1da177e4c3f415 Linus Torvalds 2005-04-16 268 * or user mode.
^1da177e4c3f415 Linus Torvalds 2005-04-16 269 */
41c594ab65fc895 Ralf Baechle 2006-04-05 270 #if 0
41c594ab65fc895 Ralf Baechle 2006-04-05 271 printk("do_page_fault() #3: sending SIGBUS to %s for "
41c594ab65fc895 Ralf Baechle 2006-04-05 272 "invalid %s\n%0*lx (epc == %0*lx, ra == %0*lx)\n",
41c594ab65fc895 Ralf Baechle 2006-04-05 273 tsk->comm,
41c594ab65fc895 Ralf Baechle 2006-04-05 274 write ? "write access to" : "read access from",
41c594ab65fc895 Ralf Baechle 2006-04-05 275 field, address,
41c594ab65fc895 Ralf Baechle 2006-04-05 276 field, (unsigned long) regs->cp0_epc,
41c594ab65fc895 Ralf Baechle 2006-04-05 277 field, (unsigned long) regs->regs[31]);
41c594ab65fc895 Ralf Baechle 2006-04-05 278 #endif
e3b28831c18c6c9 Ralf Baechle 2015-07-28 279 current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
^1da177e4c3f415 Linus Torvalds 2005-04-16 280 tsk->thread.cp0_badvaddr = address;
2e1661d2673667d Eric W. Biederman 2019-05-23 281 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 282
^1da177e4c3f415 Linus Torvalds 2005-04-16 283 return;
2ca2ebfd952d033 David Daney 2009-09-02 284 #ifndef CONFIG_64BIT
^1da177e4c3f415 Linus Torvalds 2005-04-16 285 vmalloc_fault:
^1da177e4c3f415 Linus Torvalds 2005-04-16 286 {
^1da177e4c3f415 Linus Torvalds 2005-04-16 287 /*
^1da177e4c3f415 Linus Torvalds 2005-04-16 288 * Synchronize this task's top level page-table
^1da177e4c3f415 Linus Torvalds 2005-04-16 289 * with the 'reference' page table.
^1da177e4c3f415 Linus Torvalds 2005-04-16 290 *
^1da177e4c3f415 Linus Torvalds 2005-04-16 291 * Do _not_ use "tsk" here. We might be inside
^1da177e4c3f415 Linus Torvalds 2005-04-16 292 * an interrupt in the middle of a task switch..
^1da177e4c3f415 Linus Torvalds 2005-04-16 293 */
31168f033e3751d Mike Rapoport 2019-11-21 294 int offset = pgd_index(address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 295 pgd_t *pgd, *pgd_k;
2bee1b58484f036 Mike Rapoport 2019-11-21 296 p4d_t *p4d, *p4d_k;
c6e8b587718c486 Ralf Baechle 2005-02-10 297 pud_t *pud, *pud_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 298 pmd_t *pmd, *pmd_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 299 pte_t *pte_k;
^1da177e4c3f415 Linus Torvalds 2005-04-16 300
d6f703602fee8f8 Ralf Baechle 2007-03-29 301 pgd = (pgd_t *) pgd_current[raw_smp_processor_id()] + offset;
^1da177e4c3f415 Linus Torvalds 2005-04-16 302 pgd_k = init_mm.pgd + offset;
^1da177e4c3f415 Linus Torvalds 2005-04-16 303
^1da177e4c3f415 Linus Torvalds 2005-04-16 304 if (!pgd_present(*pgd_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 305 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 306 set_pgd(pgd, *pgd_k);
^1da177e4c3f415 Linus Torvalds 2005-04-16 307
2bee1b58484f036 Mike Rapoport 2019-11-21 308 p4d = p4d_offset(pgd, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 309 p4d_k = p4d_offset(pgd_k, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 310 if (!p4d_present(*p4d_k))
2bee1b58484f036 Mike Rapoport 2019-11-21 311 goto no_context;
2bee1b58484f036 Mike Rapoport 2019-11-21 312
2bee1b58484f036 Mike Rapoport 2019-11-21 313 pud = pud_offset(p4d, address);
2bee1b58484f036 Mike Rapoport 2019-11-21 314 pud_k = pud_offset(p4d_k, address);
c6e8b587718c486 Ralf Baechle 2005-02-10 315 if (!pud_present(*pud_k))
c6e8b587718c486 Ralf Baechle 2005-02-10 316 goto no_context;
c6e8b587718c486 Ralf Baechle 2005-02-10 317
c6e8b587718c486 Ralf Baechle 2005-02-10 318 pmd = pmd_offset(pud, address);
c6e8b587718c486 Ralf Baechle 2005-02-10 319 pmd_k = pmd_offset(pud_k, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 320 if (!pmd_present(*pmd_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 321 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 322 set_pmd(pmd, *pmd_k);
^1da177e4c3f415 Linus Torvalds 2005-04-16 323
^1da177e4c3f415 Linus Torvalds 2005-04-16 324 pte_k = pte_offset_kernel(pmd_k, address);
^1da177e4c3f415 Linus Torvalds 2005-04-16 325 if (!pte_present(*pte_k))
^1da177e4c3f415 Linus Torvalds 2005-04-16 326 goto no_context;
^1da177e4c3f415 Linus Torvalds 2005-04-16 @327 return;
^1da177e4c3f415 Linus Torvalds 2005-04-16 328 }
2ca2ebfd952d033 David Daney 2009-09-02 329 #endif
^1da177e4c3f415 Linus Torvalds 2005-04-16 330 }
c3fc5cd5c5a5f47 Ralf Baechle 2013-05-29 331
:::::: The code at line 327 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
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: 26633 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-23 20:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-08 18:22 arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2021-04-23 20:09 arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns '&mm->mmap_lock' kernel test robot
2020-06-25 0:02 arch/mips/mm/fault.c:327 __do_page_fault() warn: inconsistent returns 'mm->mmap_lock' kernel test robot
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.