From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932648AbcAaQYP (ORCPT ); Sun, 31 Jan 2016 11:24:15 -0500 Received: from smtp38.i.mail.ru ([94.100.177.98]:36280 "EHLO smtp38.i.mail.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757477AbcAaQYO (ORCPT ); Sun, 31 Jan 2016 11:24:14 -0500 Subject: [PATCH 3/4] x86: signal: unify the sigaltstack check with other arches To: Linux kernel References: <56AE3369.2090709@list.ru> Cc: Andy Lutomirski , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , X86 ML , Borislav Petkov , Brian Gerst , Oleg Nesterov , Richard Weinberger From: Stas Sergeev Message-ID: <56AE3524.1030403@list.ru> Date: Sun, 31 Jan 2016 19:24:04 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <56AE3369.2090709@list.ru> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Mras: Ok Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently x86's get_sigframe() checks for "current->sas_ss_size" to determine whether there is a need to switch to sigaltstack. The common practice used by all other arches is to check for sas_ss_flags(sp) == 0 This patch makes the code consistent with other arches and also allows for the further sigaltstack improvements within this patch serie. CC: Andy Lutomirski CC: linux-kernel@vger.kernel.org CC: Thomas Gleixner CC: Ingo Molnar CC: "H. Peter Anvin" CC: x86@kernel.org CC: Borislav Petkov CC: Brian Gerst CC: Oleg Nesterov CC: Richard Weinberger Signed-off-by: Stas Sergeev --- arch/x86/kernel/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index cb6282c..3955259 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c @@ -216,7 +216,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size, if (!onsigstack) { /* This is the X/Open sanctioned signal stack switching. */ if (ka->sa.sa_flags & SA_ONSTACK) { - if (current->sas_ss_size) + if (sas_ss_flags(sp) == 0) sp = current->sas_ss_sp + current->sas_ss_size; } else if (config_enabled(CONFIG_X86_32) && (regs->ss & 0xffff) != __USER_DS && -- 2.5.0