diff --git a/include/linux/sched.h b/include/linux/sched.h index e0af82762e5b..1ed22d09fdaa 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1034,7 +1034,7 @@ struct task_struct { raw_spinlock_t pi_lock; struct wake_q_node wake_q; - struct wake_q_head *wake_q_head; + int wake_q_count; #ifdef CONFIG_RT_MUTEXES /* PI waiters blocked on a rt_mutex held by this task: */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 8d7229011d79..03e10c05e0c1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -597,14 +597,14 @@ void wake_up_q(struct wake_q_head *head) /* Task can safely be re-inserted now: */ node = node->next; task->wake_q.next = NULL; - task->wake_q_head = head; + task->wake_q_count = head->count; /* * wake_up_process() executes a full barrier, which pairs with * the queueing in wake_q_add() so as not to miss wakeups. */ wake_up_process(task); - task->wake_q_head = NULL; + task->wake_q_count = 0; put_task_struct(task); } }