|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] -EINTR return in domain_relinquish_resources
As I was looking at some of the XSA I realized that the
call-chain of:
domain_relinquish_resources
->vcpu_destroy_pagetables
-> put_page_and_type_preemptible
-> __put_page_type
returns -EINTR
which means we end up at:
618 rc = domain_relinquish_resources(d);
619 if ( rc != 0 )
620 {
621 if ( rc == -ERESTART )
622 rc = -EAGAIN;
623 break; <=== with rc=-EINTR
624 }
And return -EINTR to user-space - which loop in
'xc_domain_destroy' is only looking for:
112 int xc_domain_destroy(xc_interface *xch,
113 uint32_t domid)
114 {
115 int ret;
116 DECLARE_DOMCTL;
117 domctl.cmd = XEN_DOMCTL_destroydomain;
118 domctl.domain = (domid_t)domid;
119 do {
120 ret = do_domctl(xch, &domctl);
121 } while ( ret && (errno == EAGAIN) );
122 return ret;
123 }
which to my reading looks like we would exit out and leave
an DOMDYING_dying domain. Looking at the code it seems possible
to continue on if the user does 'xl destroy <X>' guest again,
but I was wondering if:
a). Should the toolstack (libxl or libxc) have the code to
handle -EINTR?
b). Or should the hypervisor convert the -EINTR to -ERESTART
(or -EAGAIN) - which most of the code (see users of
get_page_type_preemptible) do right now?
Thanks!
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |