xen/evtchn: don't do unbind_from_irqhandler under spinlock
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Fri, 28 May 2010 22:28:27 +0000 (15:28 -0700)
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Fri, 28 May 2010 22:28:27 +0000 (15:28 -0700)
commit3f5e554f669098c84c82ce75e7577f7e0f3fccde
treefb8147269b5f9b412e03e3539fdb2dd3cedc0ace
parent1a1a17cddbfb1f81222b3f18ee8530c41fbc3b82
xen/evtchn: don't do unbind_from_irqhandler under spinlock

unbind_from_irqhandler can end up doing /proc operations, which can't
happen under a spinlock.  So before removing the IRQ handler,
disable the irq under the port_user lock (masking the underlying event
channel and making sure the irq handler isn't running concurrently and
won't start running), then remove the handler without the lock.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
drivers/xen/evtchn.c