diff options
| author | David S. Miller <davem@davemloft.net> | 2019-01-29 21:18:54 -0800 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2019-01-29 21:18:54 -0800 |
| commit | eaf2a47f40f01ef793d2fc50cf03d199846013ca (patch) | |
| tree | 0646365688ca76306aaa17ce7983944f5ec411b0 /kernel/futex.c | |
| parent | cxgb4: cxgb4_tc_u32: use struct_size() in kvzalloc() (diff) | |
| parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (diff) | |
| download | linux-eaf2a47f40f01ef793d2fc50cf03d199846013ca.tar.gz linux-eaf2a47f40f01ef793d2fc50cf03d199846013ca.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'kernel/futex.c')
| -rw-r--r-- | kernel/futex.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index be3bff2315ff..fdd312da0992 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1452,11 +1452,7 @@ static void mark_wake_futex(struct wake_q_head *wake_q, struct futex_q *q) if (WARN(q->pi_state || q->rt_waiter, "refusing to wake PI futex\n")) return; - /* - * Queue the task for later wakeup for after we've released - * the hb->lock. wake_q_add() grabs reference to p. - */ - wake_q_add(wake_q, p); + get_task_struct(p); __unqueue_futex(q); /* * The waiting task can free the futex_q as soon as q->lock_ptr = NULL @@ -1466,6 +1462,13 @@ static void mark_wake_futex(struct wake_q_head *wake_q, struct futex_q *q) * plist_del in __unqueue_futex(). */ smp_store_release(&q->lock_ptr, NULL); + + /* + * Queue the task for later wakeup for after we've released + * the hb->lock. wake_q_add() grabs reference to p. + */ + wake_q_add(wake_q, p); + put_task_struct(p); } /* |
