From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947065AbdEZG4z (ORCPT ); Fri, 26 May 2017 02:56:55 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:39698 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1947042AbdEZG4B (ORCPT ); Fri, 26 May 2017 02:56:01 -0400 Date: Fri, 26 May 2017 08:54:31 +0200 (CEST) From: Thomas Gleixner To: Will Deacon cc: Jiri Slaby , linux-kernel@vger.kernel.org, Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Catalin Marinas , Richard Kuo , Tony Luck , Fenghua Yu , Michal Simek , Ralf Baechle , Jonas Bonn , Stefan Kristiansson , Stafford Horne , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Yoshinori Sato , Rich Felker , "David S. Miller" , Ingo Molnar , "H. Peter Anvin" , Chris Zankel , Max Filippov , Arnd Bergmann , x86@kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org, linux-mips@linux-mips.org, openrisc@lists.librecores.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-xtensa@linux-xtensa.org, linux-arch@vger.kernel.org Subject: Re: [PATCH 1/1] futex: remove duplicated code In-Reply-To: <20170525142829.GO2859@arm.com> Message-ID: References: <20170515130742.18357-1-jslaby@suse.cz> <20170515131644.GA3605@arm.com> <20170525142829.GO2859@arm.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 25 May 2017, Will Deacon wrote: > On Mon, May 22, 2017 at 11:11:33PM +0200, Thomas Gleixner wrote: > > On Mon, 15 May 2017, Will Deacon wrote: > > > On Mon, May 15, 2017 at 03:07:42PM +0200, Jiri Slaby wrote: > > > > There is code duplicated over all architecture's headers for > > > > futex_atomic_op_inuser. Namely op decoding, access_ok check for uaddr, > > > > and comparison of the result. > > > > > > > > Remove this duplication and leave up to the arches only the needed > > > > assembly which is now in arch_futex_atomic_op_inuser. > > > > > > > > Note that s390 removed access_ok check in d12a29703 ("s390/uaccess: > > > > remove pointless access_ok() checks") as access_ok there returns true. > > > > We introduce it back to the helper for the sake of simplicity (it gets > > > > optimized away anyway). > > > > > > Whilst I think this is a good idea, the code in question actually results > > > in undefined behaviour per the C spec and is reported by UBSAN. See my > > > patch fixing arm64 here (which I'd forgotten about): > > > > > > https://www.spinics.net/lists/linux-arch/msg38564.html > > > > > > But, as stated in the thread above, I think we should go a step further > > > and remove FUTEX_OP_{OR,ANDN,XOR,OPARG_SHIFT} altogether. They don't > > > appear to be used by userspace, and this whole thing is a total mess. > > > > You wish. The constants are not used, but FUTEX_WAKE_OP _IS_ used by > > glibc. They only have one argument it seems: > > > > #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) > > > > but I'm pretty sure that there is enough (probably horrible) code (think > > java) out there using FUTEX_WAKE_OP for whatever (non)sensical reasons in > > any available combination. > > Indeed, and I'm not proposing to get rid of that. It's the grossly > over-engineered array of operations and the FUTEX_OP_OPARG_SHIFT modifier > that I think we should kill. The latter likely behaves differently across > different architectures and potentially depending on the toolchain you used > to build the kernel. > > Does anybody know the history behind the interface design? Which design? 4732efbeb997 ("[PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup") Thanks, tglx