On 03/12, Renzo Davoli wrote: > > I have update also the second patch. Please note that now this patch > must be applied after the first one. > This patch implements a consistent nesting model for utrace machines. > (There is a full description in the messages I sent on Feb. 14 and Mar. 6)
This patch does 2 completely different things. I think you should make separate patches. Again, we need Roland's opinion, but could you explain why it would be better to use _reverse in utrace_report_syscall_entry() ? As for another change, > --- linux-2.6.29-rc7-git5-utrace-p1/kernel/utrace.c 2009-03-12 > 11:05:50.000000000 +0100 > +++ linux-2.6.29-rc7-git5-utrace-p2/kernel/utrace.c 2009-03-12 > 13:37:27.000000000 +0100 > @@ -1405,6 +1405,7 @@ > static bool finish_callback(struct utrace *utrace, > struct utrace_report *report, > struct utrace_engine *engine, > + struct task_struct *task, > u32 ret) > { > enum utrace_resume_action action = utrace_resume_action(ret); > @@ -1426,6 +1427,7 @@ > spin_lock(&utrace->lock); > mark_engine_wants_stop(engine); > spin_unlock(&utrace->lock); > + utrace_stop(task, utrace); I don't think this is safe. If we do utrace_stop() here, the next engine can be detached before we return (UTRACE_DETACH assumes it it safe to unlink the engine when the target is stopped). This means we can't continue list_for_each_entry(engine, &utrace->attached, entry) after return from finish_callback(). Oleg.