task_struct->ptrace_message is no longer needed. I wonder why compat_ptrace_request() does "(compat_ulong_t)ptrace_message", put_user(x, ptr) uses __typeof__(*ptr).
--- kernel/ptrace.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- PU/kernel/ptrace.c~59_NO_PTRACE_MESSAGE 2009-10-02 23:34:57.000000000 +0200 +++ PU/kernel/ptrace.c 2009-10-02 23:44:02.000000000 +0200 @@ -824,7 +824,6 @@ static int ptrace_setsiginfo(struct utra static void do_ptrace_notify_stop(struct ptrace_context *context, struct task_struct *tracee) { - tracee->ptrace_message = context->ev_mesg; tracee->exit_code = context->ev_code; // XXX: for debug only @@ -1006,7 +1005,8 @@ int ptrace_request(struct task_struct *c ret = ptrace_set_options(engine, child, data); break; case PTRACE_GETEVENTMSG: - ret = put_user(child->ptrace_message, (unsigned long __user *) data); + ret = put_user(ptrace_context(engine)->ev_mesg, + (unsigned long __user *) data); break; case PTRACE_GETSIGINFO: @@ -1174,7 +1174,8 @@ int compat_ptrace_request(struct task_st break; case PTRACE_GETEVENTMSG: - ret = put_user((compat_ulong_t) child->ptrace_message, datap); + ret = put_user((compat_ulong_t)ptrace_context(engine)->ev_mesg, + datap); break; case PTRACE_GETSIGINFO: