[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH v2 2/5] xen: export get_free_port
On 25.01.2022 23:49, Stefano Stabellini wrote: > On Tue, 25 Jan 2022, Jan Beulich wrote: >> On 25.01.2022 02:10, Stefano Stabellini wrote: >>> @@ -284,7 +285,27 @@ void evtchn_free(struct domain *d, struct evtchn *chn) >>> xsm_evtchn_close_post(chn); >>> } >>> >>> -static int evtchn_alloc_unbound(evtchn_alloc_unbound_t *alloc) >>> +struct evtchn *evtchn_alloc_unbound(struct domain *d, domid_t remote_dom) >>> +{ >>> + struct evtchn *chn; >>> + int port; >>> + >>> + if ( (port = get_free_port(d)) < 0 ) >>> + return ERR_PTR(port); >>> + chn = evtchn_from_port(d, port); >>> + >>> + evtchn_write_lock(chn); >>> + >>> + chn->state = ECS_UNBOUND; >>> + chn->u.unbound.remote_domid = remote_dom; >>> + evtchn_port_init(d, chn); >>> + >>> + evtchn_write_unlock(chn); >>> + >>> + return chn; >>> +} >>> + >>> +static int _evtchn_alloc_unbound(evtchn_alloc_unbound_t *alloc) >>> { >>> struct evtchn *chn; >>> struct domain *d; >> >> Instead of introducing a clone of this function (with, btw, still >> insufficient locking), did you consider simply using the existing >> evtchn_alloc_unbound() as-is, i.e. with the caller passing >> evtchn_alloc_unbound_t *? > > Yes, we tried that first. Unfortunately the (dummy) XSM check cannot > work. This is how we would want to call the function: > > > alloc.dom = d->domain_id; > alloc.remote_dom = hardware_domain->domain_id; > rc = evtchn_alloc_unbound(&alloc); > > > This is the implementation of the XSM check: > > static XSM_INLINE int xsm_evtchn_unbound( > XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn, domid_t id2) > { > XSM_ASSERT_ACTION(XSM_TARGET); > return xsm_default_action(action, current->domain, d); > } > > > Note the usage of current->domain. If you have any suggestions on how to > fix it please let me know. As an alternative to Julien's suggestion the function could also simply be given a new boolean parameter indicating whether to bypass the XSM check. That would be more explicit than deriving from system state. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |