Re: [PATCH 4/4] UML - kernel_thread shouldn't panic

From: roland
Date: Mon Apr 02 2007 - 16:18:32 EST


i´d like to acknowledge that this fixes the problem i had when creating loop-devices inside uml.

instead of crashing the whole uml, losetup now tells:

ioctl: LOOP_SET_FD: Resource temporarily unavailable

and dmesg:

Apr 2 20:17:53 localhost udevd[641]: udev_event_run: fork of child failed: Resource temporarily unavailable
Apr 2 20:17:54 localhost last message repeated 4 times
Apr 2 20:17:54 localhost udevd-event[3014]: run_program: fork of '/lib/udev/udev_run_hotplugd' failed:Resource temporarily unavailable
Apr 2 20:17:54 localhost udevd-event[3014]: run_program: fork of '/lib/udev/udev_run_devd' failed: Resource temporarily unavailable
Apr 2 20:17:54 localhost udevd-event[3014]: run_program: fork of '/sbin/pam_console_apply' failed: Resource temporarily unavailable
Apr 2 20:17:54 localhost udevd[641]: udev_event_run: fork of child failed: Resource temporarily unavailable

so, this should be right behaviour now when running out of memory.

regards
roland

----- Original Message ----- From: "Jeff Dike" <jdike@xxxxxxxxxxx>
To: "Andrew Morton" <akpm@xxxxxxxx>; <devzero@xxxxxx>
Cc: "LKML" <linux-kernel@xxxxxxxxxxxxxxx>; "uml-devel" <user-mode-linux-devel@xxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, April 02, 2007 6:50 PM
Subject: [PATCH 4/4] UML - kernel_thread shouldn't panic


kernel_thread should just return an error value on do_fork failure, not panic.

Signed-off-by: Jeff Dike <jdike@xxxxxxxxxxxxxxx>
--
arch/um/kernel/process.c | 2 --
1 file changed, 2 deletions(-)

Index: linux-2.6.21-mm/arch/um/kernel/process.c
===================================================================
--- linux-2.6.21-mm.orig/arch/um/kernel/process.c 2007-04-02 11:51:43.000000000 -0400
+++ linux-2.6.21-mm/arch/um/kernel/process.c 2007-04-02 12:01:00.000000000 -0400
@@ -97,8 +97,6 @@ int kernel_thread(int (*fn)(void *), voi
current->thread.request.u.thread.arg = arg;
pid = do_fork(CLONE_VM | CLONE_UNTRACED | flags, 0,
&current->thread.regs, 0, NULL, NULL);
- if(pid < 0)
- panic("do_fork failed in kernel_thread, errno = %d", pid);
return pid;
}


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/