From patchwork Thu Sep 27 15:36:45 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Picco X-Patchwork-Id: 187405 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 569612C00B0 for ; Fri, 28 Sep 2012 01:38:35 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754899Ab2I0Pie (ORCPT ); Thu, 27 Sep 2012 11:38:34 -0400 Received: from hapkido.dreamhost.com ([66.33.216.122]:45311 "EHLO hapkido.dreamhost.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754676Ab2I0Pid (ORCPT ); Thu, 27 Sep 2012 11:38:33 -0400 Received: from homiemail-a85.g.dreamhost.com (mailbigip.dreamhost.com [208.97.132.5]) by hapkido.dreamhost.com (Postfix) with ESMTP id 42E22DE1B3; Thu, 27 Sep 2012 08:38:33 -0700 (PDT) Received: from homiemail-a85.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a85.g.dreamhost.com (Postfix) with ESMTP id 71310BC040; Thu, 27 Sep 2012 08:37:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=meloft.net; h=from:to:cc :subject:date:message-id:in-reply-to:references; s=meloft.net; bh=hNReaybPCbrDIZgMZNYlSkBVdDA=; b=EIae/iW/DiEmpghFOiH1+FMQUMRd k8tJl5IJZtyB7Gou2Wz/nFhP+gwoLyulFFRtY27KehlrjcVSErgwFIIk9F339ikO KDPQ/PkU89kEnALz7YCEEXeE6vKDmgSqrd+AIClsgQz+b0eFgYCecp4Mpd6kDA/T w8Ep9BMp46KDZlc= Received: from meloft.net (c-50-136-7-79.hsd1.nh.comcast.net [50.136.7.79]) (Authenticated sender: bpicco@meloft.net) by homiemail-a85.g.dreamhost.com (Postfix) with ESMTPA id AE9C2BC031; Thu, 27 Sep 2012 08:37:52 -0700 (PDT) From: Bob Picco To: David Miller Cc: sparclinux@vger.kernel.org, bob picco , stable@vger.kernel.org Subject: [PATCH 2/2] do_rt_sigreturn provide the target sp Date: Thu, 27 Sep 2012 11:36:45 -0400 Message-Id: <1348760205-26101-3-git-send-email-bpicco@meloft.net> X-Mailer: git-send-email 1.7.11.3 In-Reply-To: <1348760205-26101-1-git-send-email-bpicco@meloft.net> References: <1348760205-26101-1-git-send-email-bpicco@meloft.net> Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org From: bob picco do_sigaltstack expects the stack we are returning to. An issue will manifest with an alternate stack. That is, a sigaltstack followed by a sigaction (aka. rt_sigaction) with SA_ONSTACK for flags will sigsegv. do_sigaltstack returns -EPERM having found on_sig_stack to be true and a sigsegv results. Let's teach do_rt_sigreturn to provide do_sigaltstack with our target stack. Signed-off-by: Bob Picco cc: stable@vger.kernel.org --- arch/sparc/kernel/signal_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index 1f905f6..f572586 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c @@ -295,7 +295,7 @@ void do_rt_sigreturn(struct pt_regs *regs) err |= restore_fpu_state(regs, fpu_save); err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); - err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf); + err |= do_sigaltstack(&sf->stack, NULL, regs->u_regs[UREG_FP]); if (err) goto segv;