diff options
author | Robert Morris <[email protected]> | 2019-07-01 14:15:18 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2019-07-01 17:54:41 -0400 |
commit | 535ac52efadc5c5cdb0483ad55c306cfaff71d50 (patch) | |
tree | 2bf0cc81a99f08e42896e30d0f798ae45376d3da /kernel | |
parent | 2c0338fe426401e3604ca5ec10d93c4f7512191b (diff) | |
download | xv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.tar.gz xv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.tar.bz2 xv6-labs-535ac52efadc5c5cdb0483ad55c306cfaff71d50.zip |
oops, don't hold mycpu() result across intr_off()
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/spinlock.c | 7 |
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 |