Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec93ac86 authored by Al Viro's avatar Al Viro
Browse files

arm: switch to generic sigaltstack



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 0aa0203f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ config ARM
	select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
	select MODULES_USE_ELF_REL
	select CLONE_BACKWARDS
	select GENERIC_SIGALTSTACK
	help
	  The ARM series is a line of low-power-consumption RISC chip designs
	  licensed by ARM Ltd and targeted at embedded applications and
+1 −1
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@
		CALL(sys_getcwd)
		CALL(sys_capget)
/* 185 */	CALL(sys_capset)
		CALL(sys_sigaltstack_wrapper)
		CALL(sys_sigaltstack)
		CALL(sys_sendfile)
		CALL(sys_ni_syscall)		/* getpmsg */
		CALL(sys_ni_syscall)		/* putpmsg */
+0 −5
Original line number Diff line number Diff line
@@ -514,11 +514,6 @@ sys_rt_sigreturn_wrapper:
		b	sys_rt_sigreturn
ENDPROC(sys_rt_sigreturn_wrapper)

sys_sigaltstack_wrapper:
		ldr	r2, [sp, #S_OFF + S_SP]
		b	do_sigaltstack
ENDPROC(sys_sigaltstack_wrapper)

sys_statfs64_wrapper:
		teq	r1, #88
		moveq	r1, #84
+2 −8
Original line number Diff line number Diff line
@@ -300,7 +300,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
	if (restore_sigframe(regs, &frame->sig))
		goto badframe;

	if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT)
	if (restore_altstack(&frame->sig.uc.uc_stack))
		goto badframe;

	return regs->ARM_r0;
@@ -486,7 +486,6 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
	       sigset_t *set, struct pt_regs *regs)
{
	struct rt_sigframe __user *frame = get_sigframe(ka, regs, sizeof(*frame));
	stack_t stack;
	int err = 0;

	if (!frame)
@@ -497,12 +496,7 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
	__put_user_error(0, &frame->sig.uc.uc_flags, err);
	__put_user_error(NULL, &frame->sig.uc.uc_link, err);

	memset(&stack, 0, sizeof(stack));
	stack.ss_sp = (void __user *)current->sas_ss_sp;
	stack.ss_flags = sas_ss_flags(regs->ARM_sp);
	stack.ss_size = current->sas_ss_size;
	err |= __copy_to_user(&frame->sig.uc.uc_stack, &stack, sizeof(stack));

	err |= __save_altstack(&frame->sig.uc.uc_stack, regs->ARM_sp);
	err |= setup_sigframe(&frame->sig, regs, set);
	if (err == 0)
		err = setup_return(regs, ka, frame->sig.retcode, frame, usig);