lkml.org 
[lkml]   [2011]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/19] ptrace: restructure ptrace_getsiginfo()
    Date
    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


    \
     
     \ /
      Last update: 2011-05-24 20:41    [W:0.022 / U:0.464 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site