Commit 1628a7cc authored by Eric W. Biederman's avatar Eric W. Biederman

signal/arm64: Factor out arm64_show_signal from arm64_force_sig_info

Filling in siginfo is error prone and so it is wise to use more
specialized helpers to do that work.  Factor out the arm specific
unhandled signal reporting from the work of delivering a signal so
the code can be modified to use functions that take the information
to fill out siginfo as parameters.
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Tested-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 24b8f79d
......@@ -224,24 +224,19 @@ void die(const char *str, struct pt_regs *regs, int err)
do_exit(SIGSEGV);
}
static bool show_unhandled_signals_ratelimited(void)
static void arm64_show_signal(int signo, const char *str)
{
static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
return show_unhandled_signals && __ratelimit(&rs);
}
void arm64_force_sig_info(struct siginfo *info, const char *str)
{
struct task_struct *tsk = current;
unsigned int esr = tsk->thread.fault_code;
struct pt_regs *regs = task_pt_regs(tsk);
if (!unhandled_signal(tsk, info->si_signo))
goto send_sig;
if (!show_unhandled_signals_ratelimited())
goto send_sig;
/* Leave if the signal won't be shown */
if (!show_unhandled_signals ||
!unhandled_signal(tsk, signo) ||
!__ratelimit(&rs))
return;
pr_info("%s[%d]: unhandled exception: ", tsk->comm, task_pid_nr(tsk));
if (esr)
......@@ -251,9 +246,12 @@ void arm64_force_sig_info(struct siginfo *info, const char *str)
print_vma_addr(KERN_CONT " in ", regs->pc);
pr_cont("\n");
__show_regs(regs);
}
send_sig:
force_sig_info(info->si_signo, info, tsk);
void arm64_force_sig_info(struct siginfo *info, const char *str)
{
arm64_show_signal(info->si_signo, str);
force_sig_info(info->si_signo, info, current);
}
void arm64_notify_die(const char *str, struct pt_regs *regs,
......
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