bitkeeper revision 1.1159.223.73 (42061207JyX53LmlrclgfiWwVqnF7w)
authorkaf24@viper.(none) <kaf24@viper.(none)>
Sun, 6 Feb 2005 12:48:07 +0000 (12:48 +0000)
committerkaf24@viper.(none) <kaf24@viper.(none)>
Sun, 6 Feb 2005 12:48:07 +0000 (12:48 +0000)
Avoid large stack frame in arch_dom0_op by dynamically allocating space
for getmeminfo batch.
Signed-off-by: keir.fraser@cl.cam.ac.uk
xen/arch/x86/dom0_ops.c

index d212324260eade37f4849458d1ffeeb4c0c8cb06..b6ade93ee7abca5101219fc0cacdeabd1efc013c 100644 (file)
@@ -216,7 +216,7 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op)
         domid_t dom = op->u.getpageframeinfo2.domain;
         unsigned long *s_ptr = (unsigned long*) op->u.getpageframeinfo2.array;
         struct domain *d;
-        unsigned long l_arr[GPF2_BATCH];
+        unsigned long *l_arr;
         ret = -ESRCH;
 
         if ( unlikely((d = find_domain_by_id(dom)) == NULL) )
@@ -227,6 +227,8 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op)
             ret = -E2BIG;
             break;
         }
+
+        l_arr = (unsigned long *)alloc_xenheap_page();
  
         ret = 0;
         for( n = 0; n < num; )
@@ -291,6 +293,8 @@ long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op)
             n += j;
         }
 
+        free_xenheap_page((unsigned long)l_arr);
+
         put_domain(d);
     }
     break;