diff options
| -rw-r--r-- | kernel/futex.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index 06938e560ac9..642f3bbaacc7 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
| @@ -1029,7 +1029,6 @@ static inline | |||
| 1029 | void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key, | 1029 | void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key, |
| 1030 | struct futex_hash_bucket *hb) | 1030 | struct futex_hash_bucket *hb) |
| 1031 | { | 1031 | { |
| 1032 | drop_futex_key_refs(&q->key); | ||
| 1033 | get_futex_key_refs(key); | 1032 | get_futex_key_refs(key); |
| 1034 | q->key = *key; | 1033 | q->key = *key; |
| 1035 | 1034 | ||
| @@ -1227,6 +1226,7 @@ retry_private: | |||
| 1227 | */ | 1226 | */ |
| 1228 | if (ret == 1) { | 1227 | if (ret == 1) { |
| 1229 | WARN_ON(pi_state); | 1228 | WARN_ON(pi_state); |
| 1229 | drop_count++; | ||
| 1230 | task_count++; | 1230 | task_count++; |
| 1231 | ret = get_futex_value_locked(&curval2, uaddr2); | 1231 | ret = get_futex_value_locked(&curval2, uaddr2); |
| 1232 | if (!ret) | 1232 | if (!ret) |
| @@ -1305,6 +1305,7 @@ retry_private: | |||
| 1305 | if (ret == 1) { | 1305 | if (ret == 1) { |
| 1306 | /* We got the lock. */ | 1306 | /* We got the lock. */ |
| 1307 | requeue_pi_wake_futex(this, &key2, hb2); | 1307 | requeue_pi_wake_futex(this, &key2, hb2); |
| 1308 | drop_count++; | ||
| 1308 | continue; | 1309 | continue; |
| 1309 | } else if (ret) { | 1310 | } else if (ret) { |
| 1310 | /* -EDEADLK */ | 1311 | /* -EDEADLK */ |
