34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
|
# Commit 017e667c433a1040306db6265b05e104568c70c8
|
||
|
# Date 2015-05-05 18:00:03 +0200
|
||
|
# Author Jan Beulich <jbeulich@suse.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
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 <jbeulich@suse.com>
|
||
|
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||
|
Acked-by: Tim Deegan <tim@xen.org>
|
||
|
|
||
|
--- a/xen/common/domctl.c
|
||
|
+++ b/xen/common/domctl.c
|
||
|
@@ -943,7 +943,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe
|
||
|
|
||
|
case XEN_DOMCTL_max_mem:
|
||
|
{
|
||
|
- unsigned long new_max;
|
||
|
+ uint64_t new_max;
|
||
|
|
||
|
ret = -EINVAL;
|
||
|
new_max = op->u.max_mem.max_memkb >> (PAGE_SHIFT-10);
|
||
|
@@ -954,7 +954,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe
|
||
|
* 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);
|
||
|
ret = 0;
|
||
|
spin_unlock(&d->page_alloc_lock);
|
||
|
}
|