All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Ian Campbell <ian.campbell@citrix.com>
Cc: xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com,
	wei.liu2@citrix.com, stefano.stabellini@eu.citrix.com
Subject: Re: [PATCH RFC 03/14] libxc: Fix xc_domain_get_tsc_info returning -Exx instead of -1.
Date: Mon, 16 Mar 2015 10:38:28 -0400	[thread overview]
Message-ID: <20150316143828.GJ8518@l.oracle.com> (raw)
In-Reply-To: <1426515802.18247.60.camel@citrix.com>

On Mon, Mar 16, 2015 at 02:23:22PM +0000, Ian Campbell wrote:
> On Mon, 2015-03-16 at 10:11 -0400, Konrad Rzeszutek Wilk wrote:
> >  static void hypercall_buffer_cache_lock(xc_interface *xch)
> >  {
> > +    int saved_errno;
> >      if ( xch->flags & XC_OPENFLAG_NON_REENTRANT )
> >          return;
> > +    saved_errno = errno;
> 
> You can do the init on declaration.
> 
> > diff --git a/tools/libxc/xc_linux_osdep.c b/tools/libxc/xc_linux_osdep.c
> > index a19e4b6..15d772b 100644
> > --- a/tools/libxc/xc_linux_osdep.c
> > +++ b/tools/libxc/xc_linux_osdep.c
> > @@ -122,10 +122,13 @@ out:
> >  
> >  static void linux_privcmd_free_hypercall_buffer(xc_interface *xch, xc_osdep_handle h, void *ptr, int npages)
> >  {
> > +    int saved_errno = errno;
> >      /* Recover the VMA flags. Maybe it's not necessary */
> >      madvise(ptr, npages * XC_PAGE_SIZE, MADV_DOFORK);
> >  
> >      munmap(ptr, npages * XC_PAGE_SIZE);
> > +    /* We MUST propagate the hypercall errno, not unmap calls. */
> 
> Hrm, in general you would want to propagate failure here if the mmap had
> succeeded, otherwise you want the mmap failure. Which would involve
> pushing the saving into the callers.
> 
> But since this function is (for better or worse) void (mainly because it
> may trigger out of band due to the cache) I think you are right to
> preserve the errno as you've done.

OK. Will repost the whole series with the above mentioned fix as v1.

Do you want me to post it now (v1) or are you right now looking at the
patchset and would want to finish that?

> 
> > +    errno = saved_errno;
> >  }
> >  
> >  static int linux_privcmd_hypercall(xc_interface *xch, xc_osdep_handle h, privcmd_hypercall_t *hypercall)
> > > 
> > > 
> > > Ian.
> > > 
> 
> 

  reply	other threads:[~2015-03-16 14:38 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-13 19:31 [PATCH RFC v1] Fix up libxc errno and return mismatch Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 01/14] libxc: Replaces tabs with spaces in xc_cpupool_freeinfo Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 02/14] libxc: xc_core_arch_memory_map_get populate errno Konrad Rzeszutek Wilk
2015-03-13 20:20   ` Andrew Cooper
2015-03-13 20:34     ` Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 03/14] libxc: Fix xc_domain_get_tsc_info returning -Exx instead of -1 Konrad Rzeszutek Wilk
2015-03-13 19:40   ` Konrad Rzeszutek Wilk
2015-03-14  7:55     ` Ian Campbell
2015-03-16 14:11       ` Konrad Rzeszutek Wilk
2015-03-16 14:23         ` Ian Campbell
2015-03-16 14:38           ` Konrad Rzeszutek Wilk [this message]
2015-03-16 14:57             ` Ian Campbell
2015-03-13 19:31 ` [PATCH RFC 04/14] libxl: xc_physdev_map return -1 and populate errno Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 05/14] libxl: Return negative value and stash error in errno for xc_offline_page API Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 06/14] libxl: Fix xc_pm API calls to return negative error and stash error in errno Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 07/14] libxl: Fix xc_tmem_control to return proper error Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 08/14] libxl: Check xc_domain_maximum_gpfn for negative return values Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 09/14] libxl: Check xc_maximum_ram_page " Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 10/14] libxl: If xc_domain_add_to_physmap fails, include errno value Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 11/14] libxl: Print xc_domain_decrease_reservation proper " Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 12/14] libxl: Check xc_sharing_* for proper return values Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 13/14] libxl: Don't assign return value to errno for E820 get/set xc_ calls Konrad Rzeszutek Wilk
2015-03-13 19:31 ` [PATCH RFC 14/14] libxl: Fix do_memory_op to return negative value on errors Konrad Rzeszutek Wilk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150316143828.GJ8518@l.oracle.com \
    --to=konrad.wilk@oracle.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.