diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-25 17:11:43 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-25 17:11:43 -0700 |
commit | f89eae4ee7e075e576bd4b4d2db901023421a3be (patch) | |
tree | 8dbd69cdc48c15f6b623e882b31092b7c451803f /include | |
parent | bdc6b758e443c21c39a14c075e5b7e01f095b37b (diff) | |
parent | b7e7ade34e6188bee2e3b0d42b51d25137d9e2a5 (diff) | |
download | lwn-f89eae4ee7e075e576bd4b4d2db901023421a3be.tar.gz lwn-f89eae4ee7e075e576bd4b4d2db901023421a3be.zip |
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fixes from Ingo Molnar:
"Two fixes: one for a lost wakeup, the other to fix the compiler
optimizing out preempt operations on ARM64 (and possibly other non-x86
architectures)"
* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched/core: Fix remote wakeups
sched/preempt: Fix preempt_count manipulations
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/preempt.h | 4 | ||||
-rw-r--r-- | include/linux/sched.h | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h index 5d8ffa3e6f8c..c1cde3577551 100644 --- a/include/asm-generic/preempt.h +++ b/include/asm-generic/preempt.h @@ -7,10 +7,10 @@ static __always_inline int preempt_count(void) { - return current_thread_info()->preempt_count; + return READ_ONCE(current_thread_info()->preempt_count); } -static __always_inline int *preempt_count_ptr(void) +static __always_inline volatile int *preempt_count_ptr(void) { return ¤t_thread_info()->preempt_count; } diff --git a/include/linux/sched.h b/include/linux/sched.h index 21c26e78aec5..23e075dcdfe4 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1539,6 +1539,7 @@ struct task_struct { unsigned sched_reset_on_fork:1; unsigned sched_contributes_to_load:1; unsigned sched_migrated:1; + unsigned sched_remote_wakeup:1; unsigned :0; /* force alignment to the next boundary */ /* unserialized, strictly 'current' */ |