From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH 02/14] libxl: Propagate errno from hypercall instead of anything else. Date: Wed, 18 Mar 2015 16:17:10 +0000 Message-ID: <1426695430.14291.64.camel@citrix.com> References: <1426520383-20855-1-git-send-email-konrad.wilk@oracle.com> <1426520383-20855-3-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YYGsQ-0000Bi-1u for xen-devel@lists.xenproject.org; Wed, 18 Mar 2015 16:31:26 +0000 In-Reply-To: <1426520383-20855-3-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com, wei.liu2@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On Mon, 2015-03-16 at 11:39 -0400, Konrad Rzeszutek Wilk wrote: > After we have done the hypercall - the errno has the failure > code. However our usage of pthread and munmap can trigger them > to manipulate the errno with their failure values. That would > be bad as what we care about is just the hypercall error value. > > Another solution to this would be to save the 'errno' from > pthread/munmap/madvise as an extra parameter to be analyzed > later. However the call-sites above us do not care about it. > > Signed-off-by: Konrad Rzeszutek Wilk Acked-by: Ian Campbell > --- > tools/libxc/xc_freebsd_osdep.c | 3 +++ > tools/libxc/xc_hcall_buf.c | 6 ++++++ > tools/libxc/xc_linux_osdep.c | 3 +++ > 3 files changed, 12 insertions(+) > > diff --git a/tools/libxc/xc_freebsd_osdep.c b/tools/libxc/xc_freebsd_osdep.c > index 151d3bf..bb6d240 100644 > --- a/tools/libxc/xc_freebsd_osdep.c > +++ b/tools/libxc/xc_freebsd_osdep.c > @@ -125,10 +125,13 @@ static void freebsd_privcmd_free_hypercall_buffer(xc_interface *xch, > int npages) > { > > + int saved_errno = errno; > /* Unlock pages */ > munlock(ptr, npages * XC_PAGE_SIZE); > > munmap(ptr, npages * XC_PAGE_SIZE); > + /* We MUST propagate the hypercall errno, not unmap calls. */ If you have cause to resend then: /* We MUST Propagate the hypercall's ernno, not the unmap call's. */. > + /* Ignore the pthread errors. */ s/the // (both throughout). Not a big deal but if it needs resending anyway Ian.