From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rich Felker Date: Mon, 06 Mar 2017 01:52:07 +0000 Subject: Re: [PATCH 1/3] futex: remove duplicated code Message-Id: <20170306015207.GN1520@brightrain.aerifal.cx> List-Id: References: <20170303122712.13353-1-jslaby@suse.cz> In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Jiri Slaby Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Catalin Marinas , Will Deacon , Richard Kuo , Tony Luck , Fenghua Yu , Michal Simek , Ralf Baechle , Jonas Bonn , Stefan Kristiansson , Stafford Horne , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt On Fri, Mar 03, 2017 at 01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rich Felker Subject: Re: [PATCH 1/3] futex: remove duplicated code Date: Sun, 5 Mar 2017 20:52:07 -0500 Message-ID: <20170306015207.GN1520@brightrain.aerifal.cx> References: <20170303122712.13353-1-jslaby@suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Catalin Marinas , Will Deacon , Richard Kuo , Tony Luck , Fenghua Yu , Michal Simek , Ralf Baechle , Jonas Bonn , Stefan Kristiansson , Stafford Horne , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt , To: Jiri Slaby Return-path: In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> Errors-to: linux-mips-bounce@linux-mips.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: linux-mips List-subscribe: List-owner: List-post: List-archive: On Fri, Mar 03, 2017 at 01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752636AbdCFCPC (ORCPT ); Sun, 5 Mar 2017 21:15:02 -0500 Received: from 216-197-64-233.tingfiber.com ([216.197.64.233]:43530 "EHLO brightrain.aerifal.cx" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752425AbdCFCO7 (ORCPT ); Sun, 5 Mar 2017 21:14:59 -0500 X-Greylist: delayed 1360 seconds by postgrey-1.27 at vger.kernel.org; Sun, 05 Mar 2017 21:14:58 EST Date: Sun, 5 Mar 2017 20:52:07 -0500 From: Rich Felker To: Jiri Slaby Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Catalin Marinas , Will Deacon , 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 , Michael Ellerman , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , "David S. Miller" , Chris Metcalf , Thomas Gleixner , 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/3] futex: remove duplicated code Message-ID: <20170306015207.GN1520@brightrain.aerifal.cx> References: <20170303122712.13353-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 03, 2017 at 01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rich Felker Subject: Re: [PATCH 1/3] futex: remove duplicated code Date: Sun, 5 Mar 2017 20:52:07 -0500 Message-ID: <20170306015207.GN1520@brightrain.aerifal.cx> References: <20170303122712.13353-1-jslaby@suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-subscribe: List-owner: List-post: List-archive: To: Jiri Slaby Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Catalin Marinas , Will Deacon , Richard Kuo , Tony Luck , Fenghua Yu , Michal Simek , Ralf Baechle , Jonas Bonn , Stefan Kristiansson , Stafford Horne , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt List-Id: linux-arch.vger.kernel.org On Fri, Mar 03, 2017 at 01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich From mboxrd@z Thu Jan 1 00:00:00 1970 From: dalias@libc.org (Rich Felker) Date: Sun, 5 Mar 2017 20:52:07 -0500 Subject: [PATCH 1/3] futex: remove duplicated code In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> References: <20170303122712.13353-1-jslaby@suse.cz> List-ID: Message-ID: <20170306015207.GN1520@brightrain.aerifal.cx> To: linux-snps-arc@lists.infradead.org On Fri, Mar 03, 2017@01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich From mboxrd@z Thu Jan 1 00:00:00 1970 From: dalias@libc.org (Rich Felker) Date: Sun, 5 Mar 2017 20:52:07 -0500 Subject: [PATCH 1/3] futex: remove duplicated code In-Reply-To: <20170303122712.13353-1-jslaby@suse.cz> References: <20170303122712.13353-1-jslaby@suse.cz> Message-ID: <20170306015207.GN1520@brightrain.aerifal.cx> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, Mar 03, 2017 at 01:27:10PM +0100, 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). Overall I'm in favor of this patch, and it's close to what I had in mind in the commit message for 00b73d8d1b7131da03aec73011a7286f566fe87f. But I'd actually like to see it go further. These ops are mainly (only?) used for the (almost never used) FUTEX_WAKE_OP operation, and there's very little sense in trying to optimize them with dedicated arch-specific forms like "lock xadd". Instead the entire logic should be in an arch-generic file, and all the arch should need to provide is a cmpxchg-on-user-memory primitive for it to use. On most archs, the same cmpxchg used in kernelspace should also work for user addresses, meaning a huge amount of unmaintained, largely untested, junk code can be removed. Rich