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 */ |