linux/drivers/xen
David Vrabel 77bb3dfdc0 xen/events: don't bind non-percpu VIRQs with percpu chip
A non-percpu VIRQ (e.g., VIRQ_CONSOLE) may be freed on a different
VCPU than it is bound to.  This can result in a race between
handle_percpu_irq() and removing the action in __free_irq() because
handle_percpu_irq() does not take desc->lock.  The interrupt handler
sees a NULL action and oopses.

Only use the percpu chip/handler for per-CPU VIRQs (like VIRQ_TIMER).

  # cat /proc/interrupts | grep virq
   40:      87246          0  xen-percpu-virq      timer0
   44:          0          0  xen-percpu-virq      debug0
   47:          0      20995  xen-percpu-virq      timer1
   51:          0          0  xen-percpu-virq      debug1
   69:          0          0   xen-dyn-virq      xen-pcpu
   74:          0          0   xen-dyn-virq      mce
   75:         29          0   xen-dyn-virq      hvc_console

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Cc: <stable@vger.kernel.org>
2015-05-19 19:55:36 +01:00
..
events xen/events: don't bind non-percpu VIRQs with percpu chip 2015-05-19 19:55:36 +01:00
xen-pciback xen-pciback: Add name prefix to global 'permissive' variable 2015-04-29 17:34:50 +01:00
xenbus xen/xenbus: Update xenbus event channel on resume 2015-05-05 18:27:13 +01:00
xenfs
acpi.c
balloon.c
biomerge.c
cpu_hotplug.c
dbgp.c
efi.c
evtchn.c
fallback.c
features.c
gntalloc.c
gntdev.c xen/grant: introduce func gnttab_unmap_refs_sync() 2015-04-27 11:41:12 +01:00
grant-table.c xen/grant: introduce func gnttab_unmap_refs_sync() 2015-04-27 11:41:12 +01:00
Kconfig
Makefile
manage.c xen: Suspend ticks on all CPUs during suspend 2015-04-29 17:10:05 +01:00
mcelog.c
pci.c
pcpu.c
platform-pci.c
preempt.c
privcmd.c
privcmd.h
swiotlb-xen.c xen: Add __GFP_DMA flag when xen_swiotlb_init gets free pages on ARM 2015-05-06 15:02:58 +01:00
sys-hypervisor.c
tmem.c
xen-acpi-cpuhotplug.c
xen-acpi-memhotplug.c
xen-acpi-pad.c
xen-acpi-processor.c
xen-balloon.c
xen-scsiback.c
xen-selfballoon.c
xen-stub.c
xlate_mmu.c