From: "Eric W. Biederman" <ebiederm@xmission.com>
To: linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [REVIEW][PATCH 5/9] signal/powerpc: Factor the common exception code into exception_common
Date: Tue, 18 Sep 2018 19:58:46 +0200 [thread overview]
Message-ID: <20180918175850.4437-5-ebiederm@xmission.com> (raw)
In-Reply-To: <878t3yitze.fsf@xmission.com>
It is brittle and wrong to populate si_pkey when there was not a pkey
exception. The field does not exist for all si_codes and in some
cases another field exists in the same memory location.
So factor out the code that all exceptions handlers must run
into exception_common, leaving the individual exception handlers
to generate the signals themselves.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
arch/powerpc/kernel/traps.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index f651fa91cdc9..f6c778b5144f 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -338,14 +338,12 @@ static void show_signal_msg(int signr, struct pt_regs *regs, int code,
show_user_instructions(regs);
}
-void _exception_pkey(int signr, struct pt_regs *regs, int code,
- unsigned long addr, int key)
+static bool exception_common(int signr, struct pt_regs *regs, int code,
+ unsigned long addr)
{
- siginfo_t info;
-
if (!user_mode(regs)) {
die("Exception in kernel mode", regs, signr);
- return;
+ return false;
}
show_signal_msg(signr, regs, code, addr);
@@ -361,6 +359,16 @@ void _exception_pkey(int signr, struct pt_regs *regs, int code,
*/
thread_pkey_regs_save(¤t->thread);
+ return true;
+}
+
+void _exception_pkey(int signr, struct pt_regs *regs, int code, unsigned long addr, int key)
+{
+ siginfo_t info;
+
+ if (!exception_common(signr, regs, code, addr))
+ return;
+
clear_siginfo(&info);
info.si_signo = signr;
info.si_code = code;
--
2.17.1
next prev parent reply other threads:[~2018-09-18 17:58 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-18 17:41 [REVIEW][PATCH 0/9] signal/powerpc: siginfo cleanups Eric W. Biederman
2018-09-18 17:41 ` Eric W. Biederman
2018-09-18 17:58 ` [REVIEW][PATCH 1/9] signal/powerpc: Use force_sig_mceerr as appropriate Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:20 ` Stephen Rothwell
2018-09-21 8:20 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 2/9] signal/powerpc: Remove pkey parameter from __bad_area Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:23 ` Stephen Rothwell
2018-09-21 8:23 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 3/9] signal/powerpc: Call _exception_pkey directly from bad_key_fault_exception Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:27 ` Stephen Rothwell
2018-09-21 8:27 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 4/9] signal/powerpc: Remove pkey parameter from __bad_area_nosemaphore Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:32 ` Stephen Rothwell
2018-09-21 8:32 ` Stephen Rothwell
2018-09-18 17:58 ` Eric W. Biederman [this message]
2018-09-18 17:58 ` [REVIEW][PATCH 5/9] signal/powerpc: Factor the common exception code into exception_common Eric W. Biederman
2018-09-21 8:38 ` Stephen Rothwell
2018-09-21 8:38 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 6/9] signal/powerpc: Call force_sig_fault from _exception Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:48 ` Stephen Rothwell
2018-09-21 8:48 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 7/9] signal/poewrpc: Specialize _exception_pkey for handling pkey exceptions Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:54 ` Stephen Rothwell
2018-09-21 8:54 ` Stephen Rothwell
2018-09-21 8:58 ` Christophe LEROY
2018-09-21 8:58 ` Christophe LEROY
2018-09-18 17:58 ` [REVIEW][PATCH 8/9] signal/powerpc: Simplify _exception_pkey by using force_sig_pkuerr Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 8:57 ` Stephen Rothwell
2018-09-21 8:57 ` Stephen Rothwell
2018-09-18 17:58 ` [REVIEW][PATCH 9/9] signal/powerpc: Use force_sig_fault where appropriate Eric W. Biederman
2018-09-18 17:58 ` Eric W. Biederman
2018-09-21 9:05 ` Stephen Rothwell
2018-09-21 9:05 ` Stephen Rothwell
2018-09-21 9:06 ` [REVIEW][PATCH 0/9] signal/powerpc: siginfo cleanups Stephen Rothwell
2018-09-21 9:06 ` Stephen Rothwell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180918175850.4437-5-ebiederm@xmission.com \
--to=ebiederm@xmission.com \
--cc=benh@kernel.crashing.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox