[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/2] xen: close evtchn port if binding to irq fails



On Tue, 2013-02-19 at 14:32 +0000, Konrad Rzeszutek Wilk wrote:
> On Mon, Feb 18, 2013 at 02:57:58PM +0000, Wei Liu wrote:
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> 
> I thought we had discussed doing this check in the user of
> this as well?
> 

User of this? I presume you mean the binding path? The patch also does
this. The first patch issues close hypercall in the unbind path, but
this patch issues hypercall in the bind path, and adds BUG_ON in the
unbind path.

As for port == 0, this cannot happend, so I remove the port == 0 case.


Wei.

> > ---
> >  drivers/xen/evtchn.c |   10 ++++++++++
> >  1 file changed, 10 insertions(+)
> > 
> > diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
> > index b1f60a0..b2db77e 100644
> > --- a/drivers/xen/evtchn.c
> > +++ b/drivers/xen/evtchn.c
> > @@ -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);
> > -- 
> > 1.7.10.4
> > 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.