aboutsummaryrefslogtreecommitdiffstats
path: root/arch/xtensa/kernel
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2013-05-15 11:34:05 -0400
committerChris Zankel <chris@zankel.net>2013-07-08 04:18:56 -0400
commita99e07ee5e887750f5136bc6799abe47a56fd2c9 (patch)
tree9464580bafe4ff135db21a6fb2a5165445d7bdaf /arch/xtensa/kernel
parentc5a771d0678f9613e9f89cf1a5bdcfa5b08b225b (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.S9
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
4632: l32i a4, a1, PT_DEPC 4632: 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
4795:
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
4794: /* Restore optional registers. */ 4864: /* 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