[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/domctl: improve XEN_DOMCTL_hypercall_init error handling
commit fd7124d03c2d06715d2ba54eb443285c51cef9e0 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Fri Mar 13 16:31:27 2015 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Mar 13 16:31:27 2015 +0100 x86/domctl: improve XEN_DOMCTL_hypercall_init error handling EACCES cannot be distinguished against an incorrect DOMCTL_INTERFACE_VERSION, and will cause an incorrect "need to rebuild the user-space tool set?" message from libxc. On the libxc side, put the useful piece of information in the error message, rathe than the -1 from do_domctl(). Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxc/xc_dom_boot.c | 6 +++--- xen/arch/x86/domctl.c | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/libxc/xc_dom_boot.c b/tools/libxc/xc_dom_boot.c index a141eb5..f82db2d 100644 --- a/tools/libxc/xc_dom_boot.c +++ b/tools/libxc/xc_dom_boot.c @@ -57,9 +57,9 @@ static int setup_hypercall_page(struct xc_dom_image *dom) domctl.u.hypercall_init.gmfn = xc_dom_p2m_guest(dom, pfn); rc = do_domctl(dom->xch, &domctl); if ( rc != 0 ) - xc_dom_panic(dom->xch, - XC_INTERNAL_ERROR, "%s: HYPERCALL_INIT failed (rc=%d)", - __FUNCTION__, rc); + xc_dom_panic(dom->xch, XC_INTERNAL_ERROR, + "%s: HYPERCALL_INIT failed: %d - %s)", + __FUNCTION__, errno, strerror(errno)); return rc; } diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 3e5bef1..d4f6ccf 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -386,16 +386,18 @@ long arch_do_domctl( page = get_page_from_gfn(d, gmfn, NULL, P2M_ALLOC); - ret = -EACCES; if ( !page || !get_page_type(page, PGT_writable_page) ) { if ( page ) + { + ret = -EPERM; put_page(page); + } + else + ret = -EINVAL; break; } - ret = 0; - hypercall_page = __map_domain_page(page); hypercall_page_initialise(d, hypercall_page); unmap_domain_page(hypercall_page); -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |