lkml.org 
[lkml]   [2008]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 3/3] x86: signal: make do_rt_sigreturn()
    From: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>

    make do_rt_sigreturn() to collect common part of sys_rt_sigreturn().

    Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
    ---
    arch/x86/kernel/signal_32.c | 12 +++++++++---
    arch/x86/kernel/signal_64.c | 11 ++++++++---
    2 files changed, 17 insertions(+), 6 deletions(-)

    diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
    index d433861..da3cf32 100644
    --- a/arch/x86/kernel/signal_32.c
    +++ b/arch/x86/kernel/signal_32.c
    @@ -215,9 +215,8 @@ badframe:
    return 0;
    }

    -asmlinkage int sys_rt_sigreturn(unsigned long __unused)
    +static long do_rt_sigreturn(struct pt_regs *regs)
    {
    - struct pt_regs *regs = (struct pt_regs *)&__unused;
    struct rt_sigframe __user *frame;
    unsigned long ax;
    sigset_t set;
    @@ -243,10 +242,17 @@ asmlinkage int sys_rt_sigreturn(unsigned long __unused)
    return ax;

    badframe:
    - signal_fault(regs, frame, "rt sigreturn");
    + signal_fault(regs, frame, "rt_sigreturn");
    return 0;
    }

    +asmlinkage int sys_rt_sigreturn(unsigned long __unused)
    +{
    + struct pt_regs *regs = (struct pt_regs *)&__unused;
    +
    + return do_rt_sigreturn(regs);
    +}
    +
    /*
    * Set up a signal frame.
    */
    diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
    index a21c851..bf77d47 100644
    --- a/arch/x86/kernel/signal_64.c
    +++ b/arch/x86/kernel/signal_64.c
    @@ -104,11 +104,11 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
    return err;
    }

    -asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
    +static long do_rt_sigreturn(struct pt_regs *regs)
    {
    struct rt_sigframe __user *frame;
    - sigset_t set;
    unsigned long ax;
    + sigset_t set;

    frame = (struct rt_sigframe __user *)(regs->sp - sizeof(long));
    if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
    @@ -131,10 +131,15 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
    return ax;

    badframe:
    - signal_fault(regs, frame, "sigreturn");
    + signal_fault(regs, frame, "rt_sigreturn");
    return 0;
    }

    +asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
    +{
    + return do_rt_sigreturn(regs);
    +}
    +
    /*
    * Set up a signal frame.
    */
    --
    1.5.6


    \
     
     \ /
      Last update: 2008-09-13 02:07    [W:0.045 / U:0.192 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site