diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2013-05-15 11:34:05 -0400 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2013-07-08 04:18:56 -0400 |
commit | a99e07ee5e887750f5136bc6799abe47a56fd2c9 (patch) | |
tree | 9464580bafe4ff135db21a6fb2a5165445d7bdaf /arch/xtensa/kernel | |
parent | c5a771d0678f9613e9f89cf1a5bdcfa5b08b225b (diff) |
xtensa: check TLB sanity on return to userspace
- check that user TLB mappings correspond to the current page table;
- check that TLB mapping VPN is in the kernel/user address range
in accordance with its ASID.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
Diffstat (limited to 'arch/xtensa/kernel')
-rw-r--r-- | arch/xtensa/kernel/entry.S | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S index fa94512ff84d..9298742f0fd0 100644 --- a/arch/xtensa/kernel/entry.S +++ b/arch/xtensa/kernel/entry.S | |||
@@ -458,7 +458,7 @@ common_exception_return: | |||
458 | 458 | ||
459 | _bbsi.l a4, TIF_NEED_RESCHED, 3f | 459 | _bbsi.l a4, TIF_NEED_RESCHED, 3f |
460 | _bbsi.l a4, TIF_NOTIFY_RESUME, 2f | 460 | _bbsi.l a4, TIF_NOTIFY_RESUME, 2f |
461 | _bbci.l a4, TIF_SIGPENDING, 4f | 461 | _bbci.l a4, TIF_SIGPENDING, 5f |
462 | 462 | ||
463 | 2: l32i a4, a1, PT_DEPC | 463 | 2: l32i a4, a1, PT_DEPC |
464 | bgeui a4, VALID_DOUBLE_EXCEPTION_ADDRESS, 4f | 464 | bgeui a4, VALID_DOUBLE_EXCEPTION_ADDRESS, 4f |
@@ -476,6 +476,13 @@ common_exception_return: | |||
476 | callx4 a4 | 476 | callx4 a4 |
477 | j 1b | 477 | j 1b |
478 | 478 | ||
479 | 5: | ||
480 | #ifdef CONFIG_DEBUG_TLB_SANITY | ||
481 | l32i a4, a1, PT_DEPC | ||
482 | bgeui a4, VALID_DOUBLE_EXCEPTION_ADDRESS, 4f | ||
483 | movi a4, check_tlb_sanity | ||
484 | callx4 a4 | ||
485 | #endif | ||
479 | 4: /* Restore optional registers. */ | 486 | 4: /* Restore optional registers. */ |
480 | 487 | ||
481 | load_xtregs_opt a1 a2 a4 a5 a6 a7 PT_XTREGS_OPT | 488 | load_xtregs_opt a1 a2 a4 a5 a6 a7 PT_XTREGS_OPT |