Re: [uml-devel] [PATCH] UML: Use PTRACE_KILL instead of SIGKILL to kill host-OS processes (take #2)

Blaisorblade
2004-11-03T19:51:13Z

On Wednesday 03 November 2004 13:08, Chris Wedgwood wrote:
> On Wed, Nov 03, 2004 at 11:47:38AM +0000, Anton Altaparmakov wrote:
> > You have two %d but only one argument. You seem to have forgotten
> > an "old_pid, " in there.

> kill(..., SIGKILL) doesn't work to kill host-OS processes created in
> the exec path in TT mode --- for this we need PTRACE_KILL (it did work
> in previous kernels, but not by design). Without this process will
> accumulate on the host-OS (although the won't be visible inside UML).

> Signed-off-by: Chris Wedgwood <cw@f00f.org>
> ---
>
> Index: cw-current/arch/um/kernel/tt/exec_user.c
> ===================================================================
> --- cw-current.orig/arch/um/kernel/tt/exec_user.c 2004-11-03
> 02:10:18.064830204 -0800 +++
> cw-current/arch/um/kernel/tt/exec_user.c 2004-11-03 04:05:00.435843464
> -0800 @@ -35,7 +35,8 @@
> tracer_panic("do_exec failed to get registers - errno = %d",
> errno);
>
> - kill(old_pid, SIGKILL);
> + if (ptrace(PTRACE_KILL, old_pid, NULL, NULL))
> + printk("Warning: ptrace(PTRACE_KILL, %d, ...) saw %d\n", old_pid,
> errno);
>
> if(ptrace_setregs(new_pid, regs) < 0)
> tracer_panic("do_exec failed to start new proc - errno = %d",

I'm going to test this. I thought that Gerd Knorr patch (which I sent cc'ing
LKML and most of you) already solved this (I actually modified that one,
replacing his SIGCONT kill()ing with a PTRACE_KILL, but I did this in the
places he identified). I guess that old_pid should either already be dead
there or going to die after a little, but I'm going to check (after I get UML
to run in the current snapshot...)

For now, please hold on this.
--
Paolo Giarrusso, aka Blaisorblade
Linux registered user n. 292729