Commit 86dffa4c authored by Shi Weihua's avatar Shi Weihua Committed by Tony Luck
Browse files

[IA64] signal(ia64_ia32): add a signal stack overflow check



The similar check has been added to x86_32(i386) in commit
id 83bd0102.
So we add this check to ia64_ia32 and improve it a liitle bit in that
we need to check for stack overflow only when the signal is on stack.

Signed-off-by: default avatarShi Weihua <shiwh@cn.fujitsu.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent d7a6c68a
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -766,8 +766,19 @@ get_sigframe (struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)

	/* This is the X/Open sanctioned signal stack switching.  */
	if (ka->sa.sa_flags & SA_ONSTACK) {
		if (!on_sig_stack(esp))
		int onstack = sas_ss_flags(esp);

		if (onstack == 0)
			esp = current->sas_ss_sp + current->sas_ss_size;
		else if (onstack == SS_ONSTACK) {
			/*
			 * If we are on the alternate signal stack and would
			 * overflow it, don't. Return an always-bogus address
			 * instead so we will die with SIGSEGV.
			 */
			if (!likely(on_sig_stack(esp - frame_size)))
				return (void __user *) -1L;
		}
	}
	/* Legacy stack switching not supported */