|
@@ -91,8 +91,15 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
|
|
|
if (!has_syscall_work(flags) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) {
|
|
|
local_daif_mask();
|
|
|
flags = current_thread_info()->flags;
|
|
|
- if (!has_syscall_work(flags))
|
|
|
+ if (!has_syscall_work(flags)) {
|
|
|
+ /*
|
|
|
+ * We're off to userspace, where interrupts are
|
|
|
+ * always enabled after we restore the flags from
|
|
|
+ * the SPSR.
|
|
|
+ */
|
|
|
+ trace_hardirqs_on();
|
|
|
return;
|
|
|
+ }
|
|
|
local_daif_restore(DAIF_PROCCTX);
|
|
|
}
|
|
|
|