summaryrefslogtreecommitdiff
path: root/kalloc.c
diff options
context:
space:
mode:
authorrtm <rtm>2006-08-10 22:08:14 +0000
committerrtm <rtm>2006-08-10 22:08:14 +0000
commit5be0039ce9e22f140a29e167526c64c723c5be3c (patch)
tree4096ed2b728cbee37dd2adee06e83f0e908f72b6 /kalloc.c
parent8a8be1b8c36e38f58f8ba3e425b6e701ad65abf3 (diff)
downloadxv6-labs-5be0039ce9e22f140a29e167526c64c723c5be3c.tar.gz
xv6-labs-5be0039ce9e22f140a29e167526c64c723c5be3c.tar.bz2
xv6-labs-5be0039ce9e22f140a29e167526c64c723c5be3c.zip
interrupts could be recursive since lapic_eoi() called before rti
so fast interrupts overflow the kernel stack fix: cli() before lapic_eoi()
Diffstat (limited to 'kalloc.c')
-rw-r--r--kalloc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kalloc.c b/kalloc.c
index c13a639..989e3e8 100644
--- a/kalloc.c
+++ b/kalloc.c
@@ -15,7 +15,7 @@
#include "proc.h"
#include "spinlock.h"
-struct spinlock kalloc_lock = { "kalloc" };
+struct spinlock kalloc_lock;
struct run {
struct run *next;
@@ -37,6 +37,7 @@ kinit(void)
uint mem;
char *start;
+ initlock(&kalloc_lock, "kalloc");
start = (char *) &end;
start = (char *) (((uint)start + PAGE) & ~(PAGE-1));
mem = 256; // XXX