diff --git a/include/linux/sched.h b/include/linux/sched.h index 0a750bac352d..f40e26b230e0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1008,7 +1008,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 1e4651d531c9..9671f3f08ba3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -601,14 +601,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); } }