aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-11-10 07:30:36 -0500
committerThomas Gleixner <tglx@linutronix.de>2010-11-10 09:01:33 -0500
commitae791a2d2e382adc69990a144a7f1a6c4bc24f1e (patch)
tree8db47b69da6faca2d15eab0ee8931367e3093cd6 /kernel
parent4c115e951d80aff126468adaec7a6c7854f61ab8 (diff)
futex: Cleanup stale fshared flag interfaces
The fast GUP changes stopped using the fshared flag in put_futex_keys(), but we kept the interface the same. Cleanup all stale users. This patch is split out from Darren Harts combo patch which also combines various flags. This way the changes are clearly separated. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Darren Hart <dvhart@linux.intel.com> LKML-Reference: <1289250609-16304-1-git-send-email-dvhart@linux.intel.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/futex.c64
1 files changed, 30 insertions, 34 deletions
diff --git a/kernel/futex.c b/kernel/futex.c
index 40a8777a27d0..38cf606a2d7d 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -283,8 +283,7 @@ again:
283 return 0; 283 return 0;
284} 284}
285 285
286static inline 286static inline void put_futex_key(union futex_key *key)
287void put_futex_key(int fshared, union futex_key *key)
288{ 287{
289 drop_futex_key_refs(key); 288 drop_futex_key_refs(key);
290} 289}
@@ -907,7 +906,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset)
907 } 906 }
908 907
909 spin_unlock(&hb->lock); 908 spin_unlock(&hb->lock);
910 put_futex_key(fshared, &key); 909 put_futex_key(&key);
911out: 910out:
912 return ret; 911 return ret;
913} 912}
@@ -965,8 +964,8 @@ retry_private:
965 if (!fshared) 964 if (!fshared)
966 goto retry_private; 965 goto retry_private;
967 966
968 put_futex_key(fshared, &key2); 967 put_futex_key(&key2);
969 put_futex_key(fshared, &key1); 968 put_futex_key(&key1);
970 goto retry; 969 goto retry;
971 } 970 }
972 971
@@ -996,9 +995,9 @@ retry_private:
996 995
997 double_unlock_hb(hb1, hb2); 996 double_unlock_hb(hb1, hb2);
998out_put_keys: 997out_put_keys:
999 put_futex_key(fshared, &key2); 998 put_futex_key(&key2);
1000out_put_key1: 999out_put_key1:
1001 put_futex_key(fshared, &key1); 1000 put_futex_key(&key1);
1002out: 1001out:
1003 return ret; 1002 return ret;
1004} 1003}
@@ -1219,8 +1218,8 @@ retry_private:
1219 if (!fshared) 1218 if (!fshared)
1220 goto retry_private; 1219 goto retry_private;
1221 1220
1222 put_futex_key(fshared, &key2); 1221 put_futex_key(&key2);
1223 put_futex_key(fshared, &key1); 1222 put_futex_key(&key1);
1224 goto retry; 1223 goto retry;
1225 } 1224 }
1226 if (curval != *cmpval) { 1225 if (curval != *cmpval) {
@@ -1260,8 +1259,8 @@ retry_private:
1260 break; 1259 break;
1261 case -EFAULT: 1260 case -EFAULT:
1262 double_unlock_hb(hb1, hb2); 1261 double_unlock_hb(hb1, hb2);
1263 put_futex_key(fshared, &key2); 1262 put_futex_key(&key2);
1264 put_futex_key(fshared, &key1); 1263 put_futex_key(&key1);
1265 ret = fault_in_user_writeable(uaddr2); 1264 ret = fault_in_user_writeable(uaddr2);
1266 if (!ret) 1265 if (!ret)
1267 goto retry; 1266 goto retry;
@@ -1269,8 +1268,8 @@ retry_private:
1269 case -EAGAIN: 1268 case -EAGAIN:
1270 /* The owner was exiting, try again. */ 1269 /* The owner was exiting, try again. */
1271 double_unlock_hb(hb1, hb2); 1270 double_unlock_hb(hb1, hb2);
1272 put_futex_key(fshared, &key2); 1271 put_futex_key(&key2);
1273 put_futex_key(fshared, &key1); 1272 put_futex_key(&key1);
1274 cond_resched(); 1273 cond_resched();
1275 goto retry; 1274 goto retry;
1276 default: 1275 default:
@@ -1352,9 +1351,9 @@ out_unlock:
1352 drop_futex_key_refs(&key1); 1351 drop_futex_key_refs(&key1);
1353 1352
1354out_put_keys: 1353out_put_keys:
1355 put_futex_key(fshared, &key2); 1354 put_futex_key(&key2);
1356out_put_key1: 1355out_put_key1:
1357 put_futex_key(fshared, &key1); 1356 put_futex_key(&key1);
1358out: 1357out:
1359 if (pi_state != NULL) 1358 if (pi_state != NULL)
1360 free_pi_state(pi_state); 1359 free_pi_state(pi_state);
@@ -1494,7 +1493,7 @@ static void unqueue_me_pi(struct futex_q *q)
1494 * private futexes. 1493 * private futexes.
1495 */ 1494 */
1496static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, 1495static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q,
1497 struct task_struct *newowner, int fshared) 1496 struct task_struct *newowner)
1498{ 1497{
1499 u32 newtid = task_pid_vnr(newowner) | FUTEX_WAITERS; 1498 u32 newtid = task_pid_vnr(newowner) | FUTEX_WAITERS;
1500 struct futex_pi_state *pi_state = q->pi_state; 1499 struct futex_pi_state *pi_state = q->pi_state;
@@ -1600,7 +1599,6 @@ static long futex_wait_restart(struct restart_block *restart);
1600/** 1599/**
1601 * fixup_owner() - Post lock pi_state and corner case management 1600 * fixup_owner() - Post lock pi_state and corner case management
1602 * @uaddr: user address of the futex 1601 * @uaddr: user address of the futex
1603 * @fshared: whether the futex is shared (1) or not (0)
1604 * @q: futex_q (contains pi_state and access to the rt_mutex) 1602 * @q: futex_q (contains pi_state and access to the rt_mutex)
1605 * @locked: if the attempt to take the rt_mutex succeeded (1) or not (0) 1603 * @locked: if the attempt to take the rt_mutex succeeded (1) or not (0)
1606 * 1604 *
@@ -1613,8 +1611,7 @@ static long futex_wait_restart(struct restart_block *restart);
1613 * 0 - success, lock not taken 1611 * 0 - success, lock not taken
1614 * <0 - on error (-EFAULT) 1612 * <0 - on error (-EFAULT)
1615 */ 1613 */
1616static int fixup_owner(u32 __user *uaddr, int fshared, struct futex_q *q, 1614static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked)
1617 int locked)
1618{ 1615{
1619 struct task_struct *owner; 1616 struct task_struct *owner;
1620 int ret = 0; 1617 int ret = 0;
@@ -1625,7 +1622,7 @@ static int fixup_owner(u32 __user *uaddr, int fshared, struct futex_q *q,
1625 * did a lock-steal - fix up the PI-state in that case: 1622 * did a lock-steal - fix up the PI-state in that case:
1626 */ 1623 */
1627 if (q->pi_state->owner != current) 1624 if (q->pi_state->owner != current)
1628 ret = fixup_pi_state_owner(uaddr, q, current, fshared); 1625 ret = fixup_pi_state_owner(uaddr, q, current);
1629 goto out; 1626 goto out;
1630 } 1627 }
1631 1628
@@ -1652,7 +1649,7 @@ static int fixup_owner(u32 __user *uaddr, int fshared, struct futex_q *q,
1652 * lock. Fix the state up. 1649 * lock. Fix the state up.
1653 */ 1650 */
1654 owner = rt_mutex_owner(&q->pi_state->pi_mutex); 1651 owner = rt_mutex_owner(&q->pi_state->pi_mutex);
1655 ret = fixup_pi_state_owner(uaddr, q, owner, fshared); 1652 ret = fixup_pi_state_owner(uaddr, q, owner);
1656 goto out; 1653 goto out;
1657 } 1654 }
1658 1655
@@ -1772,7 +1769,7 @@ retry_private:
1772 if (!fshared) 1769 if (!fshared)
1773 goto retry_private; 1770 goto retry_private;
1774 1771
1775 put_futex_key(fshared, &q->key); 1772 put_futex_key(&q->key);
1776 goto retry; 1773 goto retry;
1777 } 1774 }
1778 1775
@@ -1783,7 +1780,7 @@ retry_private:
1783 1780
1784out: 1781out:
1785 if (ret) 1782 if (ret)
1786 put_futex_key(fshared, &q->key); 1783 put_futex_key(&q->key);
1787 return ret; 1784 return ret;
1788} 1785}
1789 1786
@@ -1941,7 +1938,7 @@ retry_private:
1941 * exit to complete. 1938 * exit to complete.
1942 */ 1939 */
1943 queue_unlock(&q, hb); 1940 queue_unlock(&q, hb);
1944 put_futex_key(fshared, &q.key); 1941 put_futex_key(&q.key);
1945 cond_resched(); 1942 cond_resched();
1946 goto retry; 1943 goto retry;
1947 default: 1944 default:
@@ -1971,7 +1968,7 @@ retry_private:
1971 * Fixup the pi_state owner and possibly acquire the lock if we 1968 * Fixup the pi_state owner and possibly acquire the lock if we
1972 * haven't already. 1969 * haven't already.
1973 */ 1970 */
1974 res = fixup_owner(uaddr, fshared, &q, !ret); 1971 res = fixup_owner(uaddr, &q, !ret);
1975 /* 1972 /*
1976 * If fixup_owner() returned an error, proprogate that. If it acquired 1973 * If fixup_owner() returned an error, proprogate that. If it acquired
1977 * the lock, clear our -ETIMEDOUT or -EINTR. 1974 * the lock, clear our -ETIMEDOUT or -EINTR.
@@ -1995,7 +1992,7 @@ out_unlock_put_key:
1995 queue_unlock(&q, hb); 1992 queue_unlock(&q, hb);
1996 1993
1997out_put_key: 1994out_put_key:
1998 put_futex_key(fshared, &q.key); 1995 put_futex_key(&q.key);
1999out: 1996out:
2000 if (to) 1997 if (to)
2001 destroy_hrtimer_on_stack(&to->timer); 1998 destroy_hrtimer_on_stack(&to->timer);
@@ -2011,7 +2008,7 @@ uaddr_faulted:
2011 if (!fshared) 2008 if (!fshared)
2012 goto retry_private; 2009 goto retry_private;
2013 2010
2014 put_futex_key(fshared, &q.key); 2011 put_futex_key(&q.key);
2015 goto retry; 2012 goto retry;
2016} 2013}
2017 2014
@@ -2093,14 +2090,14 @@ retry:
2093 2090
2094out_unlock: 2091out_unlock:
2095 spin_unlock(&hb->lock); 2092 spin_unlock(&hb->lock);
2096 put_futex_key(fshared, &key); 2093 put_futex_key(&key);
2097 2094
2098out: 2095out:
2099 return ret; 2096 return ret;
2100 2097
2101pi_faulted: 2098pi_faulted:
2102 spin_unlock(&hb->lock); 2099 spin_unlock(&hb->lock);
2103 put_futex_key(fshared, &key); 2100 put_futex_key(&key);
2104 2101
2105 ret = fault_in_user_writeable(uaddr); 2102 ret = fault_in_user_writeable(uaddr);
2106 if (!ret) 2103 if (!ret)
@@ -2273,8 +2270,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
2273 */ 2270 */
2274 if (q.pi_state && (q.pi_state->owner != current)) { 2271 if (q.pi_state && (q.pi_state->owner != current)) {
2275 spin_lock(q.lock_ptr); 2272 spin_lock(q.lock_ptr);
2276 ret = fixup_pi_state_owner(uaddr2, &q, current, 2273 ret = fixup_pi_state_owner(uaddr2, &q, current);
2277 fshared);
2278 spin_unlock(q.lock_ptr); 2274 spin_unlock(q.lock_ptr);
2279 } 2275 }
2280 } else { 2276 } else {
@@ -2293,7 +2289,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
2293 * Fixup the pi_state owner and possibly acquire the lock if we 2289 * Fixup the pi_state owner and possibly acquire the lock if we
2294 * haven't already. 2290 * haven't already.
2295 */ 2291 */
2296 res = fixup_owner(uaddr2, fshared, &q, !ret); 2292 res = fixup_owner(uaddr2, &q, !ret);
2297 /* 2293 /*
2298 * If fixup_owner() returned an error, proprogate that. If it 2294 * If fixup_owner() returned an error, proprogate that. If it
2299 * acquired the lock, clear -ETIMEDOUT or -EINTR. 2295 * acquired the lock, clear -ETIMEDOUT or -EINTR.
@@ -2324,9 +2320,9 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
2324 } 2320 }
2325 2321
2326out_put_keys: 2322out_put_keys:
2327 put_futex_key(fshared, &q.key); 2323 put_futex_key(&q.key);
2328out_key2: 2324out_key2:
2329 put_futex_key(fshared, &key2); 2325 put_futex_key(&key2);
2330 2326
2331out: 2327out:
2332 if (to) { 2328 if (to) {