Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7e44e44 authored by Wei Liu's avatar Wei Liu Committed by Konrad Rzeszutek Wilk
Browse files

xen: close evtchn port if binding to irq fails



CC: stable@vger.kernel.org
Signed-off-by: default avatarWei Liu <wei.liu2@citrix.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent 18283ea7
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
}
@@ -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);