x86_32: signal: move signal number conversion to upper layer
authorHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Fri, 5 Sep 2008 23:28:38 +0000 (16:28 -0700)
committerIngo Molnar <mingo@elte.hu>
Sat, 6 Sep 2008 12:54:04 +0000 (14:54 +0200)
Bring signal number conversion in __setup_frame() and __setup_rt_frame()
up into the common part setup_frame().

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/signal_32.c

index 48982f7ce886c17ebb265fda3364945828bf749c..b668efc18eae4b671f99d92a44a6b4371fb0944a 100644 (file)
@@ -344,7 +344,6 @@ __setup_frame(int sig, struct k_sigaction *ka, sigset_t *set,
        struct sigframe __user *frame;
        void __user *restorer;
        int err = 0;
-       int usig;
        void __user *fpstate = NULL;
 
        frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate);
@@ -352,13 +351,7 @@ __setup_frame(int sig, struct k_sigaction *ka, sigset_t *set,
        if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
                goto give_sigsegv;
 
-       usig = current_thread_info()->exec_domain
-               && current_thread_info()->exec_domain->signal_invmap
-               && sig < 32
-               ? current_thread_info()->exec_domain->signal_invmap[sig]
-               : sig;
-
-       err = __put_user(usig, &frame->sig);
+       err = __put_user(sig, &frame->sig);
        if (err)
                goto give_sigsegv;
 
@@ -422,7 +415,6 @@ static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        struct rt_sigframe __user *frame;
        void __user *restorer;
        int err = 0;
-       int usig;
        void __user *fpstate = NULL;
 
        frame = get_sigframe(ka, regs, sizeof(*frame), &fpstate);
@@ -430,13 +422,7 @@ static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
                goto give_sigsegv;
 
-       usig = current_thread_info()->exec_domain
-               && current_thread_info()->exec_domain->signal_invmap
-               && sig < 32
-               ? current_thread_info()->exec_domain->signal_invmap[sig]
-               : sig;
-
-       err |= __put_user(usig, &frame->sig);
+       err |= __put_user(sig, &frame->sig);
        err |= __put_user(&frame->info, &frame->pinfo);
        err |= __put_user(&frame->uc, &frame->puc);
        err |= copy_siginfo_to_user(&frame->info, info);
@@ -482,7 +468,7 @@ static int __setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        /* Set up registers for signal handler */
        regs->sp = (unsigned long)frame;
        regs->ip = (unsigned long)ka->sa.sa_handler;
-       regs->ax = (unsigned long)usig;
+       regs->ax = (unsigned long)sig;
        regs->dx = (unsigned long)&frame->info;
        regs->cx = (unsigned long)&frame->uc;
 
@@ -506,12 +492,19 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
               sigset_t *set, struct pt_regs *regs)
 {
        int ret;
+       int usig;
+
+       usig = current_thread_info()->exec_domain
+               && current_thread_info()->exec_domain->signal_invmap
+               && sig < 32
+               ? current_thread_info()->exec_domain->signal_invmap[sig]
+               : sig;
 
        /* Set up the stack frame */
        if (ka->sa.sa_flags & SA_SIGINFO)
-               ret = __setup_rt_frame(sig, ka, info, set, regs);
+               ret = __setup_rt_frame(usig, ka, info, set, regs);
        else
-               ret = __setup_frame(sig, ka, set, regs);
+               ret = __setup_frame(usig, ka, set, regs);
 
        return ret;
 }