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.

Reply via email to