Messages in this thread | | | Date | Sun, 31 May 2009 00:38:20 +0200 | From | Oleg Nesterov <> | Subject | [RFC PATCH 00/12 v3] ptrace: introduce task_struct->ptrace_cxt |
| |
Changes:
04/12: move kfree() outside of task_lock() in alloc_ptrace_context(). But I misread your sugesstion:
> task_lock(tsk); > if (likely(!tsk->ptrace_ctx)) { > tsk->ptrace_ctx = ptrace_ctx; > task_unlock(tsk); > return 0; > } > > task_unlock(tsk); > kfree(ptrace_ctx);
Just can't do that. I hate multiple unlocks very much. So it becomes:
task_lock(tsk); if (likely(!tsk->ptrace_ctx)) { tsk->ptrace_ctx = ptrace_ctx; ptrace_ctx = NULL; } task_unlock(tsk); kfree(ptrace_ctx);
kfree(NULL) is specially allowed.
05/12: Add the comment about tracehook_init_task to ptrace_init_task().
I didn't change the original comment, but imho it is confusing. "immediately after adding @child to its parent's children list" does not matter. What does matter, is that it is called before this child is visible to the user-space and thus the unconditional ptrace_link() is safe: nobody could attach before us.
08/12: No changes, but I think it better to change format_mca_init_stack() right now. Imho it has nothing to do with tracehooks and it is the last user of ->parent (except perhaps there are some in arch/ code which should be tracehookfied).
09/12: Remove the stale "pt_" from the changelog.
Oleg.
| |