[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] -EINTR return in domain_relinquish_resources
On 21/01/2015 21:27, Konrad Rzeszutek Wilk wrote: > 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? Good spot. Other areas of similar code condense EINTR into ERESTART. I think in this case it is Xen's job to turn -EINTR into -EAGAIN as this hypercall specifically has preemptibility built into its normal use. I wonder if there are other similar hypercall paths which need to catch EINTR as well as ERESTART? ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |