|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86, waitqueue: Allocate whole page for shadow stack.
# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1321966821 0
# Node ID fe80909663c1b1765d9b3407b8dcea88bc318d53
# Parent 334d3ec1130c3890b848cf304c0ecadf729b4127
x86,waitqueue: Allocate whole page for shadow stack.
Signed-off-by: Keir Fraser <keir@xxxxxxx>
---
diff -r 334d3ec1130c -r fe80909663c1 xen/common/wait.c
--- a/xen/common/wait.c Tue Nov 22 12:53:48 2011 +0000
+++ b/xen/common/wait.c Tue Nov 22 13:00:21 2011 +0000
@@ -33,7 +33,7 @@
* hypervisor context before sleeping (descheduling), setjmp/longjmp-style.
*/
void *esp;
- char stack[3000];
+ char *stack;
#endif
};
@@ -45,6 +45,15 @@
if ( wqv == NULL )
return -ENOMEM;
+#ifdef CONFIG_X86
+ wqv->stack = alloc_xenheap_page();
+ if ( wqv->stack == NULL )
+ {
+ xfree(wqv);
+ return -ENOMEM;
+ }
+#endif
+
INIT_LIST_HEAD(&wqv->list);
wqv->vcpu = v;
@@ -62,6 +71,9 @@
return;
BUG_ON(!list_empty(&wqv->list));
+#ifdef CONFIG_X86
+ free_xenheap_page(wqv->stack);
+#endif
xfree(wqv);
v->waitqueue_vcpu = NULL;
@@ -114,7 +126,7 @@
: "=S" (wqv->esp)
: "c" (cpu_info), "D" (wqv->stack)
: "memory" );
- BUG_ON((cpu_info - (char *)wqv->esp) > sizeof(wqv->stack));
+ BUG_ON((cpu_info - (char *)wqv->esp) > PAGE_SIZE);
}
static void __finish_wait(struct waitqueue_vcpu *wqv)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |