diff options
Diffstat (limited to 'kernel/futex/core.c')
| -rw-r--r-- | kernel/futex/core.c | 37 | 
1 files changed, 1 insertions, 36 deletions
| diff --git a/kernel/futex/core.c b/kernel/futex/core.c index 25d8a88b32e5..51dd822a8060 100644 --- a/kernel/futex/core.c +++ b/kernel/futex/core.c @@ -41,11 +41,6 @@  #include "futex.h"  #include "../locking/rtmutex_common.h" -#ifndef CONFIG_HAVE_FUTEX_CMPXCHG -int  __read_mostly futex_cmpxchg_enabled; -#endif - -  /*   * The base of the bucket array and its size are always used together   * (after initialization only in futex_hash()), so ensure that they @@ -776,9 +771,6 @@ static void exit_robust_list(struct task_struct *curr)  	unsigned long futex_offset;  	int rc; -	if (!futex_cmpxchg_enabled) -		return; -  	/*  	 * Fetch the list head (which was registered earlier, via  	 * sys_set_robust_list()): @@ -874,9 +866,6 @@ static void compat_exit_robust_list(struct task_struct *curr)  	compat_long_t futex_offset;  	int rc; -	if (!futex_cmpxchg_enabled) -		return; -  	/*  	 * Fetch the list head (which was registered earlier, via  	 * sys_set_robust_list()): @@ -950,8 +939,6 @@ static void exit_pi_state_list(struct task_struct *curr)  	struct futex_hash_bucket *hb;  	union futex_key key = FUTEX_KEY_INIT; -	if (!futex_cmpxchg_enabled) -		return;  	/*  	 * We are a ZOMBIE and nobody can enqueue itself on  	 * pi_state_list anymore, but we have to be careful @@ -1044,7 +1031,7 @@ static void futex_cleanup(struct task_struct *tsk)   * actually finished the futex cleanup. The worst case for this is that the   * waiter runs through the wait loop until the state becomes visible.   * - * This is called from the recursive fault handling path in do_exit(). + * This is called from the recursive fault handling path in make_task_dead().   *   * This is best effort. Either the futex exit code has run already or   * not. If the OWNER_DIED bit has been set on the futex then the waiter can @@ -1125,26 +1112,6 @@ void futex_exit_release(struct task_struct *tsk)  	futex_cleanup_end(tsk, FUTEX_STATE_DEAD);  } -static void __init futex_detect_cmpxchg(void) -{ -#ifndef CONFIG_HAVE_FUTEX_CMPXCHG -	u32 curval; - -	/* -	 * This will fail and we want it. Some arch implementations do -	 * runtime detection of the futex_atomic_cmpxchg_inatomic() -	 * functionality. We want to know that before we call in any -	 * of the complex code paths. Also we want to prevent -	 * registration of robust lists in that case. NULL is -	 * guaranteed to fault and we get -EFAULT on functional -	 * implementation, the non-functional ones will return -	 * -ENOSYS. -	 */ -	if (futex_cmpxchg_value_locked(&curval, NULL, 0, 0) == -EFAULT) -		futex_cmpxchg_enabled = 1; -#endif -} -  static int __init futex_init(void)  {  	unsigned int futex_shift; @@ -1163,8 +1130,6 @@ static int __init futex_init(void)  					       futex_hashsize, futex_hashsize);  	futex_hashsize = 1UL << futex_shift; -	futex_detect_cmpxchg(); -  	for (i = 0; i < futex_hashsize; i++) {  		atomic_set(&futex_queues[i].waiters, 0);  		plist_head_init(&futex_queues[i].chain); |