Commit 4e3df37e authored by Cedric Le Goater's avatar Cedric Le Goater Committed by Linus Torvalds
Browse files

[PATCH] s390: rt_sigreturn fix



Check return code of do_sigaltstack and force a SIGSEGV if it is -EFAULT.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarCedric Le Goater <clg@fr.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a63a4931
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -467,8 +467,6 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs)
	if (err)
		goto badframe; 

	/* It is more difficult to avoid calling this function than to
	   call it and ignore errors.  */
	set_fs (KERNEL_DS);
	do_sigaltstack((stack_t __user *)&st, NULL, regs->gprs[15]);
	set_fs (old_fs);
+3 −3
Original line number Diff line number Diff line
@@ -254,9 +254,9 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
	if (restore_sigregs(regs, &frame->uc.uc_mcontext))
		goto badframe;

	/* It is more difficult to avoid calling this function than to
	   call it and ignore errors.  */
	do_sigaltstack(&frame->uc.uc_stack, NULL, regs->gprs[15]);
	if (do_sigaltstack(&frame->uc.uc_stack, NULL,
			   regs->gprs[15]) == -EFAULT)
		goto badframe;
	return regs->gprs[2];

badframe: