|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 03/13] xen: fix evtchn_unbind_from_user
It is possible the port was allocated but the irq was not. Take care of this
case.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
drivers/xen/evtchn.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
index b1f60a0..d2bbea1 100644
--- a/drivers/xen/evtchn.c
+++ b/drivers/xen/evtchn.c
@@ -277,7 +277,17 @@ static void evtchn_unbind_from_user(struct per_user_data
*u, int port)
{
int irq = irq_from_evtchn(port);
- unbind_from_irqhandler(irq, (void *)(unsigned long)port);
+ /* It is possible that the port was allocated but the irq was
+ * not */
+ if (irq >= 0) {
+ unbind_from_irqhandler(irq, (void *)(unsigned long)port);
+ } else {
+ struct evtchn_close close;
+ close.port = port;
+ if (port != 0 && /* port 0 is never used */
+ HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0)
+ BUG();
+ }
set_port_user(port, NULL);
}
--
1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |