diff options
author | rtm <rtm> | 2006-08-10 22:08:14 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-10 22:08:14 +0000 |
commit | 5be0039ce9e22f140a29e167526c64c723c5be3c (patch) | |
tree | 4096ed2b728cbee37dd2adee06e83f0e908f72b6 /kalloc.c | |
parent | 8a8be1b8c36e38f58f8ba3e425b6e701ad65abf3 (diff) | |
download | xv6-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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 |