aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2012-11-23 06:01:03 -0500
committerCatalin Marinas <catalin.marinas@arm.com>2012-11-23 13:11:37 -0500
commit060a18c7e3d52bdb2ff70dcc09f23dcf1656e6c8 (patch)
tree5bc9cabf72831369cd8cb5fa003d9ea80defd79e
parent304ef4e8367244b547734143c792a2ab764831e8 (diff)
arm64: signal: align return types for compat and native setup_return
setup_return is a void function, so make compat_setup_return look the same rather then unconditionally return 0. Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
-rw-r--r--arch/arm64/kernel/signal32.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c
index 4654824747a4..8f96fc9656db 100644
--- a/arch/arm64/kernel/signal32.c
+++ b/arch/arm64/kernel/signal32.c
@@ -605,9 +605,9 @@ static inline void __user *compat_get_sigframe(struct k_sigaction *ka,
605 return frame; 605 return frame;
606} 606}
607 607
608static int compat_setup_return(struct pt_regs *regs, struct k_sigaction *ka, 608static void compat_setup_return(struct pt_regs *regs, struct k_sigaction *ka,
609 compat_ulong_t __user *rc, void __user *frame, 609 compat_ulong_t __user *rc, void __user *frame,
610 int usig) 610 int usig)
611{ 611{
612 compat_ulong_t handler = ptr_to_compat(ka->sa.sa_handler); 612 compat_ulong_t handler = ptr_to_compat(ka->sa.sa_handler);
613 compat_ulong_t retcode; 613 compat_ulong_t retcode;
@@ -643,8 +643,6 @@ static int compat_setup_return(struct pt_regs *regs, struct k_sigaction *ka,
643 regs->compat_lr = retcode; 643 regs->compat_lr = retcode;
644 regs->pc = handler; 644 regs->pc = handler;
645 regs->pstate = spsr; 645 regs->pstate = spsr;
646
647 return 0;
648} 646}
649 647
650static int compat_setup_sigframe(struct compat_sigframe __user *sf, 648static int compat_setup_sigframe(struct compat_sigframe __user *sf,
@@ -714,11 +712,9 @@ int compat_setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
714 err |= __copy_to_user(&frame->sig.uc.uc_stack, &stack, sizeof(stack)); 712 err |= __copy_to_user(&frame->sig.uc.uc_stack, &stack, sizeof(stack));
715 713
716 err |= compat_setup_sigframe(&frame->sig, regs, set); 714 err |= compat_setup_sigframe(&frame->sig, regs, set);
717 if (err == 0)
718 err = compat_setup_return(regs, ka, frame->sig.retcode, frame,
719 usig);
720 715
721 if (err == 0) { 716 if (err == 0) {
717 compat_setup_return(regs, ka, frame->sig.retcode, frame, usig);
722 regs->regs[1] = (compat_ulong_t)(unsigned long)&frame->info; 718 regs->regs[1] = (compat_ulong_t)(unsigned long)&frame->info;
723 regs->regs[2] = (compat_ulong_t)(unsigned long)&frame->sig.uc; 719 regs->regs[2] = (compat_ulong_t)(unsigned long)&frame->sig.uc;
724 } 720 }
@@ -741,7 +737,7 @@ int compat_setup_frame(int usig, struct k_sigaction *ka, sigset_t *set,
741 737
742 err |= compat_setup_sigframe(frame, regs, set); 738 err |= compat_setup_sigframe(frame, regs, set);
743 if (err == 0) 739 if (err == 0)
744 err = compat_setup_return(regs, ka, frame->retcode, frame, usig); 740 compat_setup_return(regs, ka, frame->retcode, frame, usig);
745 741
746 return err; 742 return err;
747} 743}