From: Jan Beulich Date: Tue, 5 May 2015 16:00:03 +0000 (+0200) Subject: domctl: don't truncate XEN_DOMCTL_max_mem requests X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3329 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=017e667c433a1040306db6265b05e104568c70c8;p=xen.git domctl: don't truncate XEN_DOMCTL_max_mem requests Instead saturate the value if the input can't be represented in the respective struct domain field. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Acked-by: Tim Deegan --- diff --git a/xen/common/domctl.c b/xen/common/domctl.c index 28aea55f44..e571e762bc 100644 --- a/xen/common/domctl.c +++ b/xen/common/domctl.c @@ -946,7 +946,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) case XEN_DOMCTL_max_mem: { - unsigned long new_max = op->u.max_mem.max_memkb >> (PAGE_SHIFT - 10); + uint64_t new_max = op->u.max_mem.max_memkb >> (PAGE_SHIFT - 10); spin_lock(&d->page_alloc_lock); /* @@ -954,7 +954,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl) * that the domain will now be allowed to "ratchet" down to new_max. In * the meantime, while tot > max, all new allocations are disallowed. */ - d->max_pages = new_max; + d->max_pages = min(new_max, (uint64_t)(typeof(d->max_pages))-1); spin_unlock(&d->page_alloc_lock); break; }