lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Mon, 7 Apr 2014 11:37:50 +0100
From:	Luís Henriques <luis.henriques@...onical.com>
To:	Geert Uytterhoeven <geert@...ux-m68k.org>
Cc:	stable@...r.kernel.org, Heiko Carstens <heiko.carstens@...ibm.com>,
	Finn Thain <fthain@...egraphics.com.au>,
	Thomas Gleixner <tglx@...utronix.de>,
	Linux Kernel Development <linux-kernel@...r.kernel.org>,
	Linux/m68k <linux-m68k@...r.kernel.org>
Subject: Re: Boot crash fix for 68030

On Sun, Apr 06, 2014 at 11:34:46AM +0200, Geert Uytterhoeven wrote:
> Please queue the two commits below for stable:
>   - The second commit fixes a boot crash on 68030,
>   - The first commit is a prerequisite for the second.
> 
> This fix is needed on all versions that contain commit
> e4f2dfbb5e92be4e46c0625f4f8eb101110f756f ("m68k: implement futex.h to support
> userspace robust futexes and PI mutexes"), i.e. v3.10 until v3.14.
> 
> The first commit only applies cleanly to v3.14.
> I appended a backported version for v3.10..v3.13 at the bottom of this email.
> 
> Thanks for applying!

Thank you Geert, I'll queue both patches for the 3.11 kernel.

Cheers,
--
Luís

> commit 03b8c7b623c80af264c4c8d6111e5c6289933666
> Author: Heiko Carstens <heiko.carstens@...ibm.com>
> Date:   Sun Mar 2 13:09:47 2014 +0100
> 
>     futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test
>    
>     If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
>     is no runtime check necessary, allow to skip the test within futex_init().
>    
>     This allows to get rid of some code which would always give the same result,
>     and also allows the compiler to optimize a couple of if statements away.
>    
>     Signed-off-by: Heiko Carstens <heiko.carstens@...ibm.com>
>     Cc: Finn Thain <fthain@...egraphics.com.au>
>     Cc: Geert Uytterhoeven <geert@...ux-m68k.org>
>     Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
>     Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
> 
> commit e571c58f313d35c56e0018470e3375ddd1fd320e
> Author: Finn Thain <fthain@...egraphics.com.au>
> Date:   Thu Mar 6 10:29:27 2014 +1100
> 
>     m68k: Skip futex_atomic_cmpxchg_inatomic() test
>    
>     Skip the futex_atomic_cmpxchg_inatomic() test in futex_init(). It causes a
>     fatal exception on 68030 (and presumably 68020 also).
>    
>     Signed-off-by: Finn Thain <fthain@...egraphics.com.au>
>     Acked-by: Geert Uytterhoeven <geert@...ux-m68k.org>
>     Link: http://lkml.kernel.org/r/alpine.LNX.2.00.1403061006440.5525@nippy.intranet
>     Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
> 
> ---
> From 4ff4cbd563da5ff27b61abb31cb6efaf9498cf07 Mon Sep 17 00:00:00 2001
> From: Heiko Carstens <heiko.carstens@...ibm.com>
> Date: Sun, 2 Mar 2014 13:09:47 +0100
> Subject: [PATCH] futex: Allow architectures to skip
>  futex_atomic_cmpxchg_inatomic() test
> 
> If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
> is no runtime check necessary, allow to skip the test within futex_init().
> 
> This allows to get rid of some code which would always give the same result,
> and also allows the compiler to optimize a couple of if statements away.
> 
> Signed-off-by: Heiko Carstens <heiko.carstens@...ibm.com>
> Cc: Finn Thain <fthain@...egraphics.com.au>
> Cc: Geert Uytterhoeven <geert@...ux-m68k.org>
> Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
> Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
> [geert: Backported to v3.10..v3.13]
> Signed-off-by: Geert Uytterhoeven <geert@...ux-m68k.org>
> ---
>  arch/s390/Kconfig     |    1 +
>  include/linux/futex.h |    4 ++++
>  init/Kconfig          |    7 +++++++
>  kernel/futex.c        |   14 ++++++++++++--
>  4 files changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> index e9f312532526..c8d8283cb20e 100644
> --- a/arch/s390/Kconfig
> +++ b/arch/s390/Kconfig
> @@ -117,6 +117,7 @@ config S390
>  	select HAVE_FUNCTION_GRAPH_TRACER
>  	select HAVE_FUNCTION_TRACER
>  	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
> +	select HAVE_FUTEX_CMPXCHG if FUTEX
>  	select HAVE_KERNEL_BZIP2
>  	select HAVE_KERNEL_GZIP
>  	select HAVE_KERNEL_LZ4
> diff --git a/include/linux/futex.h b/include/linux/futex.h
> index b0d95cac826e..6435f46d6e13 100644
> --- a/include/linux/futex.h
> +++ b/include/linux/futex.h
> @@ -55,7 +55,11 @@ union futex_key {
>  #ifdef CONFIG_FUTEX
>  extern void exit_robust_list(struct task_struct *curr);
>  extern void exit_pi_state_list(struct task_struct *curr);
> +#ifdef CONFIG_HAVE_FUTEX_CMPXCHG
> +#define futex_cmpxchg_enabled 1
> +#else
>  extern int futex_cmpxchg_enabled;
> +#endif
>  #else
>  static inline void exit_robust_list(struct task_struct *curr)
>  {
> diff --git a/init/Kconfig b/init/Kconfig
> index 4e5d96ab2034..66e6759e4436 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1399,6 +1399,13 @@ config FUTEX
>  	  support for "fast userspace mutexes".  The resulting kernel may not
>  	  run glibc-based applications correctly.
>  
> +config HAVE_FUTEX_CMPXCHG
> +	bool
> +	help
> +	  Architectures should select this if futex_atomic_cmpxchg_inatomic()
> +	  is implemented and always working. This removes a couple of runtime
> +	  checks.
> +
>  config EPOLL
>  	bool "Enable eventpoll support" if EXPERT
>  	default y
> diff --git a/kernel/futex.c b/kernel/futex.c
> index f6ff0191ecf7..0d74e3aecb0b 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -68,7 +68,9 @@
>  
>  #include "locking/rtmutex_common.h"
>  
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
>  int __read_mostly futex_cmpxchg_enabled;
> +#endif
>  
>  #define FUTEX_HASHBITS (CONFIG_BASE_SMALL ? 4 : 8)
>  
> @@ -2731,10 +2733,10 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
>  	return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
>  }
>  
> -static int __init futex_init(void)
> +static void __init futex_detect_cmpxchg(void)
>  {
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
>  	u32 curval;
> -	int i;
>  
>  	/*
>  	 * This will fail and we want it. Some arch implementations do
> @@ -2748,6 +2750,14 @@ static int __init futex_init(void)
>  	 */
>  	if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
>  		futex_cmpxchg_enabled = 1;
> +#endif
> +}
> +
> +static int __init futex_init(void)
> +{
> +	int i;
> +
> +	futex_detect_cmpxchg();
>  
>  	for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
>  		plist_head_init(&futex_queues[i].chain);
> -- 
> 1.7.9.5
> 
> Gr{oetje,eeting}s,
> 
> 						Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> 							    -- Linus Torvalds
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists