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) {
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?
* 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