|
@@ -1073,6 +1073,9 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
|
|
* We must ensure this doesn't happen until the switch is completely
|
|
* We must ensure this doesn't happen until the switch is completely
|
|
* finished.
|
|
* finished.
|
|
*
|
|
*
|
|
|
|
+ * In particular, the load of prev->state in finish_task_switch() must
|
|
|
|
+ * happen before this.
|
|
|
|
+ *
|
|
* Pairs with the control dependency and rmb in try_to_wake_up().
|
|
* Pairs with the control dependency and rmb in try_to_wake_up().
|
|
*/
|
|
*/
|
|
smp_store_release(&prev->on_cpu, 0);
|
|
smp_store_release(&prev->on_cpu, 0);
|