[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/1] evtchn: make EVTCHNOP_reset suitable for kexec
>>> On 30.07.14 at 15:42, <david.vrabel@xxxxxxxxxx> wrote: > On 30/07/14 14:26, Vitaly Kuznetsov wrote: >> --- a/xen/common/event_channel.c >> +++ b/xen/common/event_channel.c >> @@ -957,6 +957,17 @@ static long evtchn_reset(evtchn_reset_t *r) >> for ( i = 0; port_is_valid(d, i); i++ ) >> (void)__evtchn_close(d, i); >> >> + if ( (d == current->domain) && d->evtchn_fifo ) >> + { >> + /* >> + * Guest domain called EVTCHNOP_reset with DOMID_SELF, destroying >> + * FIFO event array and control blocks, resetting evtchn_port_ops to >> + * evtchn_port_ops_2l. >> + */ >> + evtchn_fifo_destroy(d); >> + evtchn_2l_init(d); > > You need to take d->event_lock around this if, or the guest could try to > bind another event whilst the ABI is in an inconsistent state. True, but then not just around this. Subsequent to any of the __evtchn_close() invocations above, a port could also get re-used (resulting in at least leaks). So I guess after taking the lock there would also need to be a loop checking that all ports are still closed (and return an error if they aren't). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |