|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] Fix SETMAXMEM dom0_op with proper locking.
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID e6ee385e3d9a629579544aa63df69251b8416a87
# Parent a87dc2a55b0a37ab4de84225dad26ead29ccf5bb
Fix SETMAXMEM dom0_op with proper locking.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r a87dc2a55b0a -r e6ee385e3d9a xen/common/dom0_ops.c
--- a/xen/common/dom0_ops.c Sat Apr 15 08:53:27 2006
+++ b/xen/common/dom0_ops.c Sat Apr 15 08:53:52 2006
@@ -581,27 +581,31 @@
case DOM0_SETDOMAINMAXMEM:
{
struct domain *d;
+ unsigned long new_max;
+
ret = -ESRCH;
d = find_domain_by_id(op->u.setdomainmaxmem.domain);
- if ( d != NULL )
- {
- 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);
- }
+ 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 )
+ {
+ 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 )
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-changelog] Fix SETMAXMEM dom0_op with proper locking.,
Xen patchbot -3 . 0-testing <=
|
|
|
|
|