Skip to content

Commit

Permalink
xen: close evtchn port if binding to irq fails
Browse files Browse the repository at this point in the history
CC: stable@vger.kernel.org
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
  • Loading branch information
Wei Liu authored and Konrad Rzeszutek Wilk committed Feb 20, 2013
1 parent 18283ea commit e7e44e4
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/xen/evtchn.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,14 @@ static int evtchn_bind_to_user(struct per_user_data *u, int port)
u->name, (void *)(unsigned long)port);
if (rc >= 0)
rc = evtchn_make_refcounted(port);
else {
/* bind failed, should close the port now */
struct evtchn_close close;
close.port = port;
if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0)
BUG();
set_port_user(port, NULL);
}

return rc;
}
Expand All @@ -277,6 +285,8 @@ static void evtchn_unbind_from_user(struct per_user_data *u, int port)
{
int irq = irq_from_evtchn(port);

BUG_ON(irq < 0);

unbind_from_irqhandler(irq, (void *)(unsigned long)port);

set_port_user(port, NULL);
Expand Down

0 comments on commit e7e44e4

Please sign in to comment.