mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-02 20:29:20 +00:00
signal/ptrace: Add force_sig_ptrace_errno_trap and use it where needed
There are so many places that build struct siginfo by hand that at least one of them is bound to get it wrong. A handful of cases in the kernel arguably did just that when using the errno field of siginfo to pass no errno values to userspace. The usage is limited to a single si_code so at least does not mess up anything else. Encapsulate this questionable pattern in a helper function so that the userspace ABI is preserved. Update all of the places that use this pattern to use the new helper function. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
47355040d2
commit
f71dd7dc2d
6 changed files with 25 additions and 23 deletions
|
@ -1599,6 +1599,21 @@ int force_sig_pkuerr(void __user *addr, u32 pkey)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* For the crazy architectures that include trap information in
|
||||
* the errno field, instead of an actual errno value.
|
||||
*/
|
||||
int force_sig_ptrace_errno_trap(int errno, void __user *addr)
|
||||
{
|
||||
struct siginfo info;
|
||||
|
||||
clear_siginfo(&info);
|
||||
info.si_signo = SIGTRAP;
|
||||
info.si_errno = errno;
|
||||
info.si_code = TRAP_HWBKPT;
|
||||
info.si_addr = addr;
|
||||
return force_sig_info(info.si_signo, &info, current);
|
||||
}
|
||||
|
||||
int kill_pgrp(struct pid *pid, int sig, int priv)
|
||||
{
|
||||
int ret;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue