[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 4/8] xen/evtchn: modify evtchn_bind_interdomain to pass domain as argument
evtchn_bind_interdomain() finds the local domain from "current->domain" pointer. evtchn_bind_interdomain() will be called from the XEN to support static event channel during domain creation. "current" pointer is not valid at that time, therefore modify the evtchn_bind_interdomain() to pass domain as an argument. Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx> --- xen/common/event_channel.c | 6 +++--- xen/include/xen/event.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c index bf5dc2c8ad..84f0055a5a 100644 --- a/xen/common/event_channel.c +++ b/xen/common/event_channel.c @@ -367,11 +367,11 @@ static void double_evtchn_unlock(struct evtchn *lchn, struct evtchn *rchn) * If lport is zero get the next free port and allocate. If port is non-zero * allocate the specified lport. */ -int evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind, +int evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind, struct domain *ld, evtchn_port_t lport) { struct evtchn *lchn, *rchn; - struct domain *ld = current->domain, *rd; + struct domain *rd; int rc; evtchn_port_t rport = bind->remote_port; domid_t rdom = bind->remote_dom; @@ -1248,7 +1248,7 @@ long cf_check do_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) struct evtchn_bind_interdomain bind_interdomain; if ( copy_from_guest(&bind_interdomain, arg, 1) != 0 ) return -EFAULT; - rc = evtchn_bind_interdomain(&bind_interdomain, 0); + rc = evtchn_bind_interdomain(&bind_interdomain, current->domain, 0); if ( !rc && __copy_to_guest(arg, &bind_interdomain, 1) ) rc = -EFAULT; /* Cleaning up here would be a mess! */ break; diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h index 6e26879793..8eae9984a9 100644 --- a/xen/include/xen/event.h +++ b/xen/include/xen/event.h @@ -77,6 +77,7 @@ int __must_check evtchn_alloc_unbound(evtchn_alloc_unbound_t *alloc, /* Bind an event channel port to interdomain */ int __must_check evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind, + struct domain *ld, evtchn_port_t port); /* Unmask a local event-channel port. */ -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |