Messages in this thread Patch in this message |  | | | From | Tejun Heo <> | | Subject | [PATCH 14/19] ptrace: restructure ptrace_getsiginfo() | | Date | Tue, 24 May 2011 20:37:34 +0200 |
| |
Flatten ptrace_getsiginfo() to prepare for more logic in the success path. While at it, remove [un]likely() on child->last_siginfo check - signal delivery and group stop traps can only be distinguished by NULL siginfo and group stop isn't that unlikely.
This patch doesn't introduce any functional change.
Signed-off-by: Tejun Heo <tj@kernel.org> --- kernel/ptrace.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 3911567..851870c 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -572,16 +572,19 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data) static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) { unsigned long flags; - int error = -ESRCH; + int error; - if (lock_task_sighand(child, &flags)) { - error = -EINVAL; - if (likely(child->last_siginfo != NULL)) { - *info = *child->last_siginfo; - error = 0; - } - unlock_task_sighand(child, &flags); - } + if (!lock_task_sighand(child, &flags)) + return -ESRCH; + + error = -EINVAL; + if (!child->last_siginfo) + goto out_unlock; + + error = 0; + *info = *child->last_siginfo; +out_unlock: + unlock_task_sighand(child, &flags); return error; } -- 1.7.1
|  |