summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-07-01 14:15:18 -0400
committerFrans Kaashoek <[email protected]>2019-07-01 17:54:41 -0400
commit535ac52efadc5c5cdb0483ad55c306cfaff71d50 (patch)
tree2bf0cc81a99f08e42896e30d0f798ae45376d3da
parent2c0338fe426401e3604ca5ec10d93c4f7512191b (diff)
downloadxv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.tar.gz
xv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.tar.bz2
xv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.zip
oops, don't hold mycpu() result across intr_off()
-rw-r--r--kernel/spinlock.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/spinlock.c b/kernel/spinlock.c
index 557a86c..5a44a46 100644
--- a/kernel/spinlock.c
+++ b/kernel/spinlock.c
@@ -87,13 +87,12 @@ holding(struct spinlock *lk)
void
push_off(void)
{
- struct cpu *c = mycpu();
int old = intr_get();
intr_off();
- if(c->noff == 0)
- c->intena = old;
- c->noff += 1;
+ if(mycpu()->noff == 0)
+ mycpu()->intena = old;
+ mycpu()->noff += 1;
}
void