linux/drivers/xen
David Vrabel c26377e62f xen/events: avoid race with raising an event in unmask_evtchn()
In unmask_evtchn(), when the mask bit is cleared after testing for
pending and the event becomes pending between the test and clear, then
the upcall will not become pending and the event may be lost or
delayed.

Avoid this by always clearing the mask bit before checking for
pending.  If a hypercall is needed, remask the event as
EVTCHNOP_unmask will only retrigger pending events if they were
masked.

This fixes a regression introduced in 3.7 by
b5e579232d (xen/events: fix
unmask_evtchn for PV on HVM guests) which reordered the clear mask and
check pending operations.

Changes in v2:
- set mask before hypercall.

Cc: stable@vger.kernel.org
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2013-03-27 12:06:04 -04:00
..
xen-pciback xen-pciback: notify hypervisor about devices intended to be assigned to guests 2013-03-22 10:20:55 -04:00
xenbus xenbus: fix compile failure on ARM with Xen enabled 2013-03-01 10:55:00 -05:00
xenfs userns: Convert xenfs to use kuid and kgid where appropriate 2012-09-21 03:13:06 -07:00
acpi.c xen/acpi/sleep: Enable ACPI sleep via the __acpi_os_prepare_sleep 2012-05-07 15:33:18 -04:00
balloon.c xen: balloon: allow PVMMU interfaces to be compiled out 2012-11-29 12:59:13 +00:00
biomerge.c xen: using EXPORT_SYMBOL requires including export.h 2012-01-18 15:37:49 -08:00
cpu_hotplug.c Xen: properly bound buffer access when parsing cpu/*/availability 2013-01-15 15:57:02 -05:00
dbgp.c xen: dbgp: Fix warning when CONFIG_PCI is not enabled. 2012-10-19 15:19:37 -04:00
events.c xen/events: avoid race with raising an event in unmask_evtchn() 2013-03-27 12:06:04 -04:00
evtchn.c xen: close evtchn port if binding to irq fails 2013-02-19 22:02:33 -05:00
fallback.c xen-pciback: notify hypervisor about devices intended to be assigned to guests 2013-03-22 10:20:55 -04:00
features.c
gntalloc.c mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
gntdev.c xen/gntdev: remove erronous use of copy_to_user 2013-01-15 16:02:40 -05:00
grant-table.c xen: introduce xen_remap, use it instead of ioremap 2013-02-19 22:02:34 -05:00
Kconfig xen/acpi-stub: Disable it b/c the acpi_processor_add is no longer called. 2013-03-27 12:06:02 -04:00
Makefile xen/acpi: ACPI cpu hotplug 2013-02-19 22:02:29 -05:00
manage.c xen/resume: Fix compile warnings. 2012-04-19 15:12:49 -04:00
mcelog.c xen/mce: add .poll method for mcelog device driver 2012-07-19 15:51:41 -04:00
pci.c xen/pci: Check for PCI bridge before using it. 2012-05-30 10:16:35 -04:00
pcpu.c Features: 2013-02-24 16:18:31 -08:00
platform-pci.c Drivers: xen: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
privcmd.c xen/privcmd: Fix mmap batch ioctl. 2013-01-15 16:00:52 -05:00
privcmd.h xen: Add privcmd device driver 2011-12-16 13:29:31 -05:00
swiotlb-xen.c x86: Don't panic if can not alloc buffer for swiotlb 2013-01-29 19:36:53 -08:00
sys-hypervisor.c xen: sysfs: fix build warning. 2012-10-19 15:17:51 -04:00
tmem.c xen/tmem: Add missing %s in the printk statement. 2013-02-19 22:02:31 -05:00
xen-acpi-cpuhotplug.c xen/acpi: xen cpu hotplug minor updates 2013-02-25 07:44:29 -05:00
xen-acpi-memhotplug.c xen/acpi: xen memory hotplug minor updates 2013-02-25 07:44:21 -05:00
xen-acpi-pad.c ACPI: Remove useless type argument of driver .remove() operation 2013-01-26 00:37:24 +01:00
xen-acpi-processor.c xen/acpi-processor: Don't dereference struct acpi_processor on all CPUs. 2013-03-22 08:23:11 -04:00
xen-balloon.c Features: 2012-03-22 20:16:14 -07:00
xen-selfballoon.c mm: export a function to get vm committed memory 2012-11-15 15:41:22 -08:00
xen-stub.c xen/acpi: remove redundant acpi/acpi_drivers.h include 2013-03-11 13:53:02 -04:00
xencomm.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00