[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4] libxc: check for various libxc failures and pass them down



On Tue, 2013-11-05 at 17:58 +1300, Matthew Daley wrote:
> On Tue, Nov 5, 2013 at 6:31 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> > On Sun, 2013-11-03 at 12:08 +1300, Matthew Daley wrote:
> >>  static int xc_cpuid_policy(
> >>      xc_interface *xch, domid_t domid,
> >>      const unsigned int *input, unsigned int *regs)
> >>  {
> >> +    int                 rc;
> >>      xc_dominfo_t        info;
> >>
> >> -    if ( xc_domain_getinfo(xch, domid, 1, &info) == 0 )
> >> +    rc = xc_domain_getinfo(xch, domid, 1, &info);
> >> +    if ( rc < 0 )
> >> +        return rc;
> >> +    if ( rc == 0 )
> >>          return -EINVAL;
> >
> > I think this means that this function now returns a mixture of -1 (with
> > errno set) and -errno depending on the failure mode. libxc really is a
> > horrible chuffing mess in this regard, sorry.
> 
> I noticed :)
> 
> >
> > Luckily nothing right now looks at the return value (you are adding
> > those checks to the caller in this patch) so I think you can just
> > convert this into { errno=EINVAL; return -1; }
> >
> > Then again, it looks like xc_cpuid_set (the aforementioned called)
> > already returns both styles (explicit rc = -EINVAL, vs returning the
> > result of do_domctl which is -1 and set errno). Gah!
> >
> > Hah, but no one looks at the specific value of the result of
> > xc_cpuid_set on failure: libxl doesn't check it at all, Python and ocaml
> > bindings turn it into a generic exception using xc_get_last_error.
> >
> > WTF, xc_get_last_error is a *third* error handling mechanism in libxc,
> > apparently built into the logging infrastructure. Which isn't used at
> > all on this code path AFAICT.
> >
> > What a terrible mess. I think I should just apply this patch and putthe
> > rug back over the rest of it :-(
> 
> Perhaps this patch should be dropped and the issues put in a "take a
> proper look at later" pile?

I'm ok with that. Sorry it took me until v4 to realise what a rats nest
it would be to fix.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.