From 0910232b56633236bd847efb0405c9a02d9e5f7e Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 8 May 2024 19:22:37 -0300 Subject: [PATCH] interrupt: do userspace check on interrupt return to userspace --- kernel-src/sys/interrupt.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel-src/sys/interrupt.c b/kernel-src/sys/interrupt.c index 07aa2ba1..92a67604 100644 --- a/kernel-src/sys/interrupt.c +++ b/kernel-src/sys/interrupt.c @@ -95,6 +95,7 @@ static void dopending(context_t *ctx) { } } +__attribute__((no_caller_saved_registers)) void sched_userspacecheck(context_t *context); void interrupt_isr(int vec, context_t *ctx) { isr_t *isr = &_cpu()->isr[vec]; @@ -114,6 +115,9 @@ void interrupt_isr(int vec, context_t *ctx) { if (isr->eoi) isr->eoi(isr); + if (ARCH_CONTEXT_ISUSER(ctx)) + sched_userspacecheck(ctx); + _cpu()->intstatus = ARCH_CONTEXT_INTSTATUS(ctx); }