]> git.baikalelectronics.ru Git - kernel.git/commit
x86/xen: disable premption when enabling local irqs
authorDavid Vrabel <david.vrabel@citrix.com>
Thu, 15 Aug 2013 12:21:04 +0000 (13:21 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 20 Aug 2013 14:02:03 +0000 (10:02 -0400)
commitd1f9cdf882d58940ba478a2f0a8703de98b7df92
tree089af5ce298915f3825545319ec58a185ca2ab90
parent8b80ae6681e3bd39cc50b944a5a181c8ef75f4ce
x86/xen: disable premption when enabling local irqs

If CONFIG_PREEMPT is enabled then xen_enable_irq() (and
xen_restore_fl()) could be preempted and rescheduled on a different
VCPU in between the clear of the mask and the check for pending
events.  This may result in events being lost as the upcall will check
for pending events on the wrong VCPU.

Fix this by disabling preemption around the unmask and check for
events.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/xen/irq.c