Skip to content

Commit 8645e56

Browse files
KAGA-KOKObostrovs
authored andcommitted
xen: Enable interrupts when calling _cond_resched()
xen_maybe_preempt_hcall() is called from the exception entry point xen_do_hypervisor_callback with interrupts disabled. _cond_resched() evades the might_sleep() check in cond_resched() which would have caught that and schedule_debug() unfortunately lacks a check for irqs_disabled(). Enable interrupts around the call and use cond_resched() to catch future issues. Fixes: fdfd811 ("x86/xen: allow privcmd hypercalls to be preempted") Signed-off-by: Thomas Gleixner <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Juergen Gross <[email protected]> Signed-off-by: Boris Ostrovsky <[email protected]>
1 parent 9038ec9 commit 8645e56

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/xen/preempt.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ asmlinkage __visible void xen_maybe_preempt_hcall(void)
3333
* cpu.
3434
*/
3535
__this_cpu_write(xen_in_preemptible_hcall, false);
36-
_cond_resched();
36+
local_irq_enable();
37+
cond_resched();
38+
local_irq_disable();
3739
__this_cpu_write(xen_in_preemptible_hcall, true);
3840
}
3941
}

0 commit comments

Comments
 (0)