From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932411AbWHUAhD (ORCPT ); Sun, 20 Aug 2006 20:37:03 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932400AbWHUAhC (ORCPT ); Sun, 20 Aug 2006 20:37:02 -0400 Received: from ozlabs.tip.net.au ([203.10.76.45]:13788 "EHLO ozlabs.org") by vger.kernel.org with ESMTP id S932392AbWHUAhA (ORCPT ); Sun, 20 Aug 2006 20:37:00 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <17641.30.670343.779791@cargo.ozlabs.ibm.com> Date: Mon, 21 Aug 2006 10:36:46 +1000 From: Paul Mackerras To: Arnd Bergmann Cc: =?iso-8859-1?q?Bj=F6rn_Steinbrink?= , Russell King , Andrew Morton , rusty@rustcorp.com.au, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org Subject: Re: [PATCH] introduce kernel_execve function to replace __KERNEL_SYSCALLS__ In-Reply-To: <200608201913.39989.arnd@arndb.de> References: <20060819073031.GA25711@atjola.homenet> <200608201501.29296.arnd@arndb.de> <20060820134745.GA11843@atjola.homenet> <200608201913.39989.arnd@arndb.de> X-Mailer: VM 7.19 under Emacs 21.4.1 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Arnd Bergmann writes: > Iit turned out most of the architectures that already implement > their own execve() call instead of using the _syscall3 function > for it end up passing the return value of sys_execve down, > instead of setting errno. I really don't like having an "errno" variable in the kernel. What if two processes are doing an execve concurrently? Anyway, your patch returns the (positive) errno value here: > + WARN_ON(segment_eq(fs, USER_DS)); > + ret = execve(filename, (char **)argv, (char **)envp); > + if (ret) > + ret = errno; > + > + return ret; but here we are testing for a negative value to mean error: > - if (execve("/sbin/shutdown", argv, envp) < 0) { > + if (kernel_execve("/sbin/shutdown", argv, envp) < 0) { Paul.