diff options
Diffstat (limited to 'kernel/futex.c')
-rw-r--r-- | kernel/futex.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index 0773f2b23b10..5d6ce6413ef1 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
@@ -1191,7 +1191,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this, | |||
1191 | if (pi_state->owner != current) | 1191 | if (pi_state->owner != current) |
1192 | return -EINVAL; | 1192 | return -EINVAL; |
1193 | 1193 | ||
1194 | raw_spin_lock(&pi_state->pi_mutex.wait_lock); | 1194 | raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); |
1195 | new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); | 1195 | new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); |
1196 | 1196 | ||
1197 | /* | 1197 | /* |
@@ -1217,22 +1217,22 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this, | |||
1217 | else if (curval != uval) | 1217 | else if (curval != uval) |
1218 | ret = -EINVAL; | 1218 | ret = -EINVAL; |
1219 | if (ret) { | 1219 | if (ret) { |
1220 | raw_spin_unlock(&pi_state->pi_mutex.wait_lock); | 1220 | raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); |
1221 | return ret; | 1221 | return ret; |
1222 | } | 1222 | } |
1223 | 1223 | ||
1224 | raw_spin_lock_irq(&pi_state->owner->pi_lock); | 1224 | raw_spin_lock(&pi_state->owner->pi_lock); |
1225 | WARN_ON(list_empty(&pi_state->list)); | 1225 | WARN_ON(list_empty(&pi_state->list)); |
1226 | list_del_init(&pi_state->list); | 1226 | list_del_init(&pi_state->list); |
1227 | raw_spin_unlock_irq(&pi_state->owner->pi_lock); | 1227 | raw_spin_unlock(&pi_state->owner->pi_lock); |
1228 | 1228 | ||
1229 | raw_spin_lock_irq(&new_owner->pi_lock); | 1229 | raw_spin_lock(&new_owner->pi_lock); |
1230 | WARN_ON(!list_empty(&pi_state->list)); | 1230 | WARN_ON(!list_empty(&pi_state->list)); |
1231 | list_add(&pi_state->list, &new_owner->pi_state_list); | 1231 | list_add(&pi_state->list, &new_owner->pi_state_list); |
1232 | pi_state->owner = new_owner; | 1232 | pi_state->owner = new_owner; |
1233 | raw_spin_unlock_irq(&new_owner->pi_lock); | 1233 | raw_spin_unlock(&new_owner->pi_lock); |
1234 | 1234 | ||
1235 | raw_spin_unlock(&pi_state->pi_mutex.wait_lock); | 1235 | raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); |
1236 | 1236 | ||
1237 | deboost = rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q); | 1237 | deboost = rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q); |
1238 | 1238 | ||
@@ -2127,11 +2127,11 @@ static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked) | |||
2127 | * we returned due to timeout or signal without taking the | 2127 | * we returned due to timeout or signal without taking the |
2128 | * rt_mutex. Too late. | 2128 | * rt_mutex. Too late. |
2129 | */ | 2129 | */ |
2130 | raw_spin_lock(&q->pi_state->pi_mutex.wait_lock); | 2130 | raw_spin_lock_irq(&q->pi_state->pi_mutex.wait_lock); |
2131 | owner = rt_mutex_owner(&q->pi_state->pi_mutex); | 2131 | owner = rt_mutex_owner(&q->pi_state->pi_mutex); |
2132 | if (!owner) | 2132 | if (!owner) |
2133 | owner = rt_mutex_next_owner(&q->pi_state->pi_mutex); | 2133 | owner = rt_mutex_next_owner(&q->pi_state->pi_mutex); |
2134 | raw_spin_unlock(&q->pi_state->pi_mutex.wait_lock); | 2134 | raw_spin_unlock_irq(&q->pi_state->pi_mutex.wait_lock); |
2135 | ret = fixup_pi_state_owner(uaddr, q, owner); | 2135 | ret = fixup_pi_state_owner(uaddr, q, owner); |
2136 | goto out; | 2136 | goto out; |
2137 | } | 2137 | } |