Messages in this thread | | | Date | Mon, 20 Jun 2011 22:33:20 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 5/7] ptrace: kill clone/exec tracehooks |
| |
On 06/17, Tejun Heo wrote: > > At this point, tracehooks aren't useful to mainline kernel and mostly > just add an extra layer of obfuscation.
Yes, this is true.
> @@ -1481,10 +1481,22 @@ long do_fork(unsigned long clone_flags, > } > > /* > - * When called from kernel_thread, don't do user tracing stuff. > + * Determine whether and which event to report to ptracer. When > + * called from kernel_thread or CLONE_UNTRACED is explicitly > + * requested, no event is reported; otherwise, report if the event > + * for the type of forking is enabled. > */ > - if (likely(user_mode(regs))) > - trace = tracehook_prepare_clone(clone_flags); > + if (likely(user_mode(regs)) && !(clone_flags & CLONE_UNTRACED)) {
Off-topic, but I never understood this user_mode() check... OK, a traced task can call kernel_thread() in kernel, but this used CLONE_UNTRACED.
> + if (clone_flags & CLONE_VFORK) > + trace = PTRACE_EVENT_VFORK; > + else if ((clone_flags & CSIGNAL) != SIGCHLD) > + trace = PTRACE_EVENT_CLONE; > + else > + trace = PTRACE_EVENT_FORK; > + > + if (likely(!ptrace_event_enabled(current, trace))) > + trace = 0; > + }
As I said am going to apply this all except 6/7, but imho this deserves a trivial helper anyway.
Oleg.
| |