From a035d27414f527c02ffb2c110be2c5e55dcf40ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Mon, 6 Jul 2015 20:47:53 +0200 Subject: [PATCH] native: irq_cpu: Make IRQ enabling/disabling safe --- cpu/native/irq_cpu.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cpu/native/irq_cpu.c b/cpu/native/irq_cpu.c index ed73fed7f7..2d21a79979 100644 --- a/cpu/native/irq_cpu.c +++ b/cpu/native/irq_cpu.c @@ -180,12 +180,17 @@ unsigned enableIRQ(void) _native_syscall_enter(); DEBUG("enableIRQ()\n"); + /* Mark the IRQ as enabled first since sigprocmask could call the handler + * before returning to userspace. + */ + + prev_state = native_interrupts_enabled; + native_interrupts_enabled = 1; + if (sigprocmask(SIG_SETMASK, &_native_sig_set, NULL) == -1) { err(EXIT_FAILURE, "enableIRQ: sigprocmask"); } - prev_state = native_interrupts_enabled; - native_interrupts_enabled = 1; _native_syscall_leave(); DEBUG("enableIRQ(): return\n");