[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8808612b-11c2-f7b8-f027-7ff92e992c50@suse.com>
Date: Wed, 19 Feb 2020 13:02:57 +0100
From: Jürgen Groß <jgross@...e.com>
To: Thomas Gleixner <tglx@...utronix.de>,
LKML <linux-kernel@...r.kernel.org>
Cc: x86@...nel.org, Boris Ostrovsky <boris.ostrovsky@...cle.com>,
Stefano Stabellini <sstabellini@...nel.org>,
xen-devel@...ts.xenproject.org
Subject: Re: [PATCH] xen: Enable interrupts when calling _cond_resched()
On 19.02.20 12:01, Thomas Gleixner wrote:
> 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: fdfd811ddde3 ("x86/xen: allow privcmd hypercalls to be preempted")
> Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
> ---
> drivers/xen/preempt.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> --- a/drivers/xen/preempt.c
> +++ b/drivers/xen/preempt.c
> @@ -33,8 +33,10 @@ asmlinkage __visible void xen_maybe_pree
> * cpu.
> */
> __this_cpu_write(xen_in_preemptible_hcall, false);
> - _cond_resched();
> + local_irq_enable();
> + cond_resched();
> __this_cpu_write(xen_in_preemptible_hcall, true);
> + local_irq_disable();
Could you please put the call of local_irq_disable() directly after the
cond_resched() call to make the result symmetric regarding writing of
xen_in_preemptible_hcall and irq enable/disable?
Juergen
Powered by blists - more mailing lists