Commit 2c44ce28 authored by Eric W. Biederman's avatar Eric W. Biederman

signal/powerpc: Factor the common exception code into exception_common

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.
Reviewed-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent cd60ab7a
......@@ -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(&current->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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment