2004-10-28 01:43:48

by Chris Wright

[permalink] [raw]
Subject: [PATCH] error out on execve with no binfmts

Early calls to userspace can invoke an execve() before any binfmt handlers
are registered. Properly return an error in this case rather than 0.
On at least one arch (x86_64) without this patch, the system will double
fault on early attempts to call_usermodehelper. Suggestions on a better
error?

Signed-off-by: Chris Wright <[email protected]>

===== fs/exec.c 1.142 vs edited =====
--- 1.142/fs/exec.c 2004-10-22 21:23:42 -07:00
+++ edited/fs/exec.c 2004-10-27 18:11:54 -07:00
@@ -984,7 +984,7 @@
*/
int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
{
- int try,retval=0;
+ int try,retval;
struct linux_binfmt *fmt;
#ifdef __alpha__
/* handle /sbin/loader.. */
@@ -1028,6 +1028,7 @@
/* kernel module loader fixup */
/* so we don't try to load run modprobe in kernel space. */
set_fs(USER_DS);
+ retval = -ENOENT;
for (try=0; try<2; try++) {
read_lock(&binfmt_lock);
for (fmt = formats ; fmt ; fmt = fmt->next) {


2004-10-28 01:58:31

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] error out on execve with no binfmts

Chris Wright <[email protected]> wrote:
>
> Early calls to userspace can invoke an execve() before any binfmt handlers
> are registered. Properly return an error in this case rather than 0.
> On at least one arch (x86_64) without this patch, the system will double
> fault on early attempts to call_usermodehelper. Suggestions on a better
> error?

These handlers are installed at core_initcall() time. Who is calling out
to userspace so early?

2004-10-28 04:29:14

by Chris Wright

[permalink] [raw]
Subject: Re: [PATCH] error out on execve with no binfmts

* Andrew Morton ([email protected]) wrote:
> Chris Wright <[email protected]> wrote:
> >
> > Early calls to userspace can invoke an execve() before any binfmt handlers
> > are registered. Properly return an error in this case rather than 0.
> > On at least one arch (x86_64) without this patch, the system will double
> > fault on early attempts to call_usermodehelper. Suggestions on a better
> > error?
>
> These handlers are installed at core_initcall() time. Who is calling out
> to userspace so early?

kobject_add()->kobject_hotplug() stuff during driver_init(), like platform bus
initialization, etc.

thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net