Skip to content

Commit

Permalink
signal/arc: Push siginfo generation into unhandled_exception
Browse files Browse the repository at this point in the history
Pass signr, sicode, and address into unhandled_exception as explicit
parameters instead of members of struct siginfo.  Then in unhandled
exception generate and send the siginfo using force_sig_fault.

This keeps the code simpler and less error prone.

Acked-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
  • Loading branch information
Eric W. Biederman committed Sep 27, 2018
1 parent a618a27 commit 4445229
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions arch/arc/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,38 +42,32 @@ void die(const char *str, struct pt_regs *regs, unsigned long address)
* -for kernel, chk if due to copy_(to|from)_user, otherwise die()
*/
static noinline int
unhandled_exception(const char *str, struct pt_regs *regs, siginfo_t *info)
unhandled_exception(const char *str, struct pt_regs *regs,
int signo, int si_code, void __user *addr)
{
if (user_mode(regs)) {
struct task_struct *tsk = current;

tsk->thread.fault_address = (__force unsigned int)info->si_addr;
tsk->thread.fault_address = (__force unsigned int)addr;

force_sig_info(info->si_signo, info, tsk);
force_sig_fault(signo, si_code, addr, tsk);

} else {
/* If not due to copy_(to|from)_user, we are doomed */
if (fixup_exception(regs))
return 0;

die(str, regs, (unsigned long)info->si_addr);
die(str, regs, (unsigned long)addr);
}

return 1;
}

#define DO_ERROR_INFO(signr, str, name, sicode) \
int name(unsigned long address, struct pt_regs *regs) \
{ \
siginfo_t info; \
\
clear_siginfo(&info); \
info.si_signo = signr; \
info.si_errno = 0; \
info.si_code = sicode; \
info.si_addr = (void __user *)address; \
\
return unhandled_exception(str, regs, &info);\
{ \
return unhandled_exception(str, regs, signr, sicode, \
(void __user *)address); \
}

/*
Expand Down

0 comments on commit 4445229

Please sign in to comment.