Fix SETMAXMEM dom0_op with proper locking.

Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2006-04-15 09:52:32 +01:00
1 parent 16d1b5e9db
commit 660442fdaf
1 file changed
+16 -12
+16 -12
View File
@@ -581,27 +581,31 @@ long do_dom0_op(GUEST_HANDLE(dom0_op_t) u_dom0_op)
case DOM0_SETDOMAINMAXMEM:
{
struct domain *d;
unsigned long new_max;
ret = -ESRCH;
d = find_domain_by_id(op->u.setdomainmaxmem.domain);
if ( d != NULL )
if ( d == NULL )
break;
ret = -EINVAL;
new_max = op->u.setdomainmaxmem.max_memkb >> (PAGE_SHIFT-10);
spin_lock(&d->page_alloc_lock);
if ( new_max >= d->tot_pages )
{
unsigned long new_max;
new_max = op->u.setdomainmaxmem.max_memkb >> (PAGE_SHIFT-10);
if (new_max < d->tot_pages)
ret = -EINVAL;
else
{
d->max_pages = new_max;
ret = 0;
}
put_domain(d);
d->max_pages = new_max;
ret = 0;
}
spin_unlock(&d->page_alloc_lock);
put_domain(d);
}
break;
case DOM0_SETDOMAINHANDLE:
{
struct domain *d;
struct domain *d;
ret = -ESRCH;
d = find_domain_by_id(op->u.setdomainhandle.domain);
if ( d != NULL )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.