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

Re: [Xen-devel] [PATCH] xc Python ext lib: Xen 4.6 Unable to start a 2T guest without OverflowError



On Tue, Dec 23, 2014 at 02:04:28PM -0500, Cathy Avery wrote:
> Starting a vm with memory over 2T resulted in an overflow error.
> 
> memory = 2097152 defined as number of megabytes returns the error
> "OverflowError: signed integer is greater than maximum"
> 
> The error is the result of the python extension argument translator
> defining max_memkb as a signed int instead of an unsigned int.
> So PyArg_ParseTuple(args, "ii", &dom, &maxmem_kb) overflowed by one with
> 2147483648 kb.
> 
> The other issue is that max_memkb is defined as uint64_t in the subsequent
> domctl target api so the xc lib and its python C extension should use 
> uint64_t as well.
> 
> /* XEN_DOMCTL_max_mem */
> struct xen_domctl_max_mem {
>     /* IN variables. */
>     uint64_aligned_t max_memkb;
> };
> 
> Signed-off-by: Cathy Avery <cathy.avery@xxxxxxxxxx>

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
>  tools/libxc/include/xenctrl.h     |    2 +-
>  tools/libxc/xc_domain.c           |    2 +-
>  tools/python/xen/lowlevel/xc/xc.c |    4 ++--
>  3 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
> index 0ad8b8d..1b5c622 100644
> --- a/tools/libxc/include/xenctrl.h
> +++ b/tools/libxc/include/xenctrl.h
> @@ -1253,7 +1253,7 @@ int xc_getcpuinfo(xc_interface *xch, int max_cpus,
>  
>  int xc_domain_setmaxmem(xc_interface *xch,
>                          uint32_t domid,
> -                        unsigned int max_memkb);
> +                        uint64_t max_memkb);
>  
>  int xc_domain_set_memmap_limit(xc_interface *xch,
>                                 uint32_t domid,
> diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
> index b864872..2c0fc9f 100644
> --- a/tools/libxc/xc_domain.c
> +++ b/tools/libxc/xc_domain.c
> @@ -630,7 +630,7 @@ int xc_shadow_control(xc_interface *xch,
>  
>  int xc_domain_setmaxmem(xc_interface *xch,
>                          uint32_t domid,
> -                        unsigned int max_memkb)
> +                        uint64_t max_memkb)
>  {
>      DECLARE_DOMCTL;
>      domctl.cmd = XEN_DOMCTL_max_mem;
> diff --git a/tools/python/xen/lowlevel/xc/xc.c 
> b/tools/python/xen/lowlevel/xc/xc.c
> index f83e33d..7a5d36e 100644
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -1658,9 +1658,9 @@ static PyObject *pyxc_sched_credit2_domain_get(XcObject 
> *self, PyObject *args)
>  static PyObject *pyxc_domain_setmaxmem(XcObject *self, PyObject *args)
>  {
>      uint32_t dom;
> -    unsigned int maxmem_kb;
> +    uint64_t maxmem_kb;
>  
> -    if (!PyArg_ParseTuple(args, "ii", &dom, &maxmem_kb))
> +    if (!PyArg_ParseTuple(args, "ik", &dom, &maxmem_kb))
>          return NULL;
>  
>      if (xc_domain_setmaxmem(self->xc_handle, dom, maxmem_kb) != 0)
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
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®.