• Home
  • Raw
  • Download

Lines Matching refs:info

501 		int sig = q->info.si_signo;  in __flush_itimer_signals()
503 if (likely(q->info.si_code != SI_TIMER)) { in __flush_itimer_signals()
571 static void collect_signal(int sig, struct sigpending *list, kernel_siginfo_t *info, in collect_signal() argument
581 if (q->info.si_signo == sig) { in collect_signal()
593 copy_siginfo(info, &first->info); in collect_signal()
597 (info->si_code == SI_TIMER) && in collect_signal()
598 (info->si_sys_private); in collect_signal()
607 clear_siginfo(info); in collect_signal()
608 info->si_signo = sig; in collect_signal()
609 info->si_errno = 0; in collect_signal()
610 info->si_code = SI_USER; in collect_signal()
611 info->si_pid = 0; in collect_signal()
612 info->si_uid = 0; in collect_signal()
617 kernel_siginfo_t *info, bool *resched_timer) in __dequeue_signal() argument
622 collect_signal(sig, pending, info, resched_timer); in __dequeue_signal()
632 int dequeue_signal(struct task_struct *tsk, sigset_t *mask, kernel_siginfo_t *info) in dequeue_signal() argument
640 signr = __dequeue_signal(&tsk->pending, mask, info, &resched_timer); in dequeue_signal()
643 mask, info, &resched_timer); in dequeue_signal()
699 posixtimer_rearm(info); in dequeue_signal()
703 info->si_sys_private = 0; in dequeue_signal()
710 static int dequeue_synchronous_signal(kernel_siginfo_t *info) in dequeue_synchronous_signal() argument
727 if ((q->info.si_code > SI_USER) && in dequeue_synchronous_signal()
728 (sigmask(q->info.si_signo) & SYNCHRONOUS_MASK)) { in dequeue_synchronous_signal()
739 if (q->info.si_signo == sync->info.si_signo) in dequeue_synchronous_signal()
743 sigdelset(&pending->signal, sync->info.si_signo); in dequeue_synchronous_signal()
747 copy_siginfo(info, &sync->info); in dequeue_synchronous_signal()
749 return info->si_signo; in dequeue_synchronous_signal()
794 if (sigismember(mask, q->info.si_signo)) { in flush_sigqueue_mask()
801 static inline int is_si_special(const struct kernel_siginfo *info) in is_si_special() argument
803 return info <= SEND_SIG_PRIV; in is_si_special()
806 static inline bool si_fromuser(const struct kernel_siginfo *info) in si_fromuser() argument
808 return info == SEND_SIG_NOINFO || in si_fromuser()
809 (!is_si_special(info) && SI_FROMUSER(info)); in si_fromuser()
831 static int check_kill_permission(int sig, struct kernel_siginfo *info, in check_kill_permission() argument
840 if (!si_fromuser(info)) in check_kill_permission()
864 return security_task_kill(t, info, sig, NULL); in check_kill_permission()
1074 static int __send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t, in __send_signal() argument
1115 override_rlimit = (is_si_special(info) || info->si_code >= 0); in __send_signal()
1122 switch ((unsigned long) info) { in __send_signal()
1124 clear_siginfo(&q->info); in __send_signal()
1125 q->info.si_signo = sig; in __send_signal()
1126 q->info.si_errno = 0; in __send_signal()
1127 q->info.si_code = SI_USER; in __send_signal()
1128 q->info.si_pid = task_tgid_nr_ns(current, in __send_signal()
1131 q->info.si_uid = in __send_signal()
1137 clear_siginfo(&q->info); in __send_signal()
1138 q->info.si_signo = sig; in __send_signal()
1139 q->info.si_errno = 0; in __send_signal()
1140 q->info.si_code = SI_KERNEL; in __send_signal()
1141 q->info.si_pid = 0; in __send_signal()
1142 q->info.si_uid = 0; in __send_signal()
1145 copy_siginfo(&q->info, info); in __send_signal()
1148 } else if (!is_si_special(info) && in __send_signal()
1149 sig >= SIGRTMIN && info->si_code != SI_USER) { in __send_signal()
1186 trace_signal_generate(sig, info, t, type != PIDTYPE_PID, result); in __send_signal()
1190 static inline bool has_si_pid_and_uid(struct kernel_siginfo *info) in has_si_pid_and_uid() argument
1193 switch (siginfo_layout(info->si_signo, info->si_code)) { in has_si_pid_and_uid()
1212 static int send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t, in send_signal() argument
1218 if (info == SEND_SIG_NOINFO) { in send_signal()
1221 } else if (info == SEND_SIG_PRIV) { in send_signal()
1224 } else if (has_si_pid_and_uid(info)) { in send_signal()
1231 kuid_t uid = make_kuid(current_user_ns(), info->si_uid); in send_signal()
1232 info->si_uid = from_kuid_munged(t_user_ns, uid); in send_signal()
1237 force = (info->si_code == SI_KERNEL); in send_signal()
1241 info->si_pid = 0; in send_signal()
1245 return __send_signal(sig, info, t, type, force); in send_signal()
1282 __group_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p) in __group_send_sig_info() argument
1284 return send_signal(sig, info, p, PIDTYPE_TGID); in __group_send_sig_info()
1287 int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p, in do_send_sig_info() argument
1294 ret = send_signal(sig, info, p, type); in do_send_sig_info()
1313 force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t) in force_sig_info_to_task() argument
1318 int sig = info->si_signo; in force_sig_info_to_task()
1337 ret = send_signal(sig, info, t, PIDTYPE_PID); in force_sig_info_to_task()
1343 int force_sig_info(struct kernel_siginfo *info) in force_sig_info() argument
1345 return force_sig_info_to_task(info, current); in force_sig_info()
1407 int group_send_sig_info(int sig, struct kernel_siginfo *info, in group_send_sig_info() argument
1413 ret = check_kill_permission(sig, info, p); in group_send_sig_info()
1417 ret = do_send_sig_info(sig, info, p, type); in group_send_sig_info()
1436 int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp) in __kill_pgrp_info() argument
1444 int err = group_send_sig_info(sig, info, p, PIDTYPE_PGID); in __kill_pgrp_info()
1451 int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid) in kill_pid_info() argument
1460 error = group_send_sig_info(sig, info, p, PIDTYPE_TGID); in kill_pid_info()
1473 static int kill_proc_info(int sig, struct kernel_siginfo *info, pid_t pid) in kill_proc_info() argument
1477 error = kill_pid_info(sig, info, find_vpid(pid)); in kill_proc_info()
1521 struct kernel_siginfo info; in kill_pid_usb_asyncio() local
1529 clear_siginfo(&info); in kill_pid_usb_asyncio()
1530 info.si_signo = sig; in kill_pid_usb_asyncio()
1531 info.si_errno = errno; in kill_pid_usb_asyncio()
1532 info.si_code = SI_ASYNCIO; in kill_pid_usb_asyncio()
1533 *((sigval_t *)&info.si_pid) = addr; in kill_pid_usb_asyncio()
1545 ret = security_task_kill(p, &info, sig, cred); in kill_pid_usb_asyncio()
1551 ret = __send_signal(sig, &info, p, PIDTYPE_TGID, false); in kill_pid_usb_asyncio()
1569 static int kill_something_info(int sig, struct kernel_siginfo *info, pid_t pid) in kill_something_info() argument
1574 return kill_proc_info(sig, info, pid); in kill_something_info()
1582 ret = __kill_pgrp_info(sig, info, in kill_something_info()
1591 int err = group_send_sig_info(sig, info, p, in kill_something_info()
1609 int send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p) in send_sig_info() argument
1618 return do_send_sig_info(sig, info, p, PIDTYPE_PID); in send_sig_info()
1634 struct kernel_siginfo info; in force_sig() local
1636 clear_siginfo(&info); in force_sig()
1637 info.si_signo = sig; in force_sig()
1638 info.si_errno = 0; in force_sig()
1639 info.si_code = SI_KERNEL; in force_sig()
1640 info.si_pid = 0; in force_sig()
1641 info.si_uid = 0; in force_sig()
1642 force_sig_info(&info); in force_sig()
1670 struct kernel_siginfo info; in force_sig_fault_to_task() local
1672 clear_siginfo(&info); in force_sig_fault_to_task()
1673 info.si_signo = sig; in force_sig_fault_to_task()
1674 info.si_errno = 0; in force_sig_fault_to_task()
1675 info.si_code = code; in force_sig_fault_to_task()
1676 info.si_addr = addr; in force_sig_fault_to_task()
1678 info.si_trapno = trapno; in force_sig_fault_to_task()
1681 info.si_imm = imm; in force_sig_fault_to_task()
1682 info.si_flags = flags; in force_sig_fault_to_task()
1683 info.si_isr = isr; in force_sig_fault_to_task()
1685 return force_sig_info_to_task(&info, t); in force_sig_fault_to_task()
1702 struct kernel_siginfo info; in send_sig_fault() local
1704 clear_siginfo(&info); in send_sig_fault()
1705 info.si_signo = sig; in send_sig_fault()
1706 info.si_errno = 0; in send_sig_fault()
1707 info.si_code = code; in send_sig_fault()
1708 info.si_addr = addr; in send_sig_fault()
1710 info.si_trapno = trapno; in send_sig_fault()
1713 info.si_imm = imm; in send_sig_fault()
1714 info.si_flags = flags; in send_sig_fault()
1715 info.si_isr = isr; in send_sig_fault()
1717 return send_sig_info(info.si_signo, &info, t); in send_sig_fault()
1722 struct kernel_siginfo info; in force_sig_mceerr() local
1725 clear_siginfo(&info); in force_sig_mceerr()
1726 info.si_signo = SIGBUS; in force_sig_mceerr()
1727 info.si_errno = 0; in force_sig_mceerr()
1728 info.si_code = code; in force_sig_mceerr()
1729 info.si_addr = addr; in force_sig_mceerr()
1730 info.si_addr_lsb = lsb; in force_sig_mceerr()
1731 return force_sig_info(&info); in force_sig_mceerr()
1736 struct kernel_siginfo info; in send_sig_mceerr() local
1739 clear_siginfo(&info); in send_sig_mceerr()
1740 info.si_signo = SIGBUS; in send_sig_mceerr()
1741 info.si_errno = 0; in send_sig_mceerr()
1742 info.si_code = code; in send_sig_mceerr()
1743 info.si_addr = addr; in send_sig_mceerr()
1744 info.si_addr_lsb = lsb; in send_sig_mceerr()
1745 return send_sig_info(info.si_signo, &info, t); in send_sig_mceerr()
1751 struct kernel_siginfo info; in force_sig_bnderr() local
1753 clear_siginfo(&info); in force_sig_bnderr()
1754 info.si_signo = SIGSEGV; in force_sig_bnderr()
1755 info.si_errno = 0; in force_sig_bnderr()
1756 info.si_code = SEGV_BNDERR; in force_sig_bnderr()
1757 info.si_addr = addr; in force_sig_bnderr()
1758 info.si_lower = lower; in force_sig_bnderr()
1759 info.si_upper = upper; in force_sig_bnderr()
1760 return force_sig_info(&info); in force_sig_bnderr()
1766 struct kernel_siginfo info; in force_sig_pkuerr() local
1768 clear_siginfo(&info); in force_sig_pkuerr()
1769 info.si_signo = SIGSEGV; in force_sig_pkuerr()
1770 info.si_errno = 0; in force_sig_pkuerr()
1771 info.si_code = SEGV_PKUERR; in force_sig_pkuerr()
1772 info.si_addr = addr; in force_sig_pkuerr()
1773 info.si_pkey = pkey; in force_sig_pkuerr()
1774 return force_sig_info(&info); in force_sig_pkuerr()
1783 struct kernel_siginfo info; in force_sig_ptrace_errno_trap() local
1785 clear_siginfo(&info); in force_sig_ptrace_errno_trap()
1786 info.si_signo = SIGTRAP; in force_sig_ptrace_errno_trap()
1787 info.si_errno = errno; in force_sig_ptrace_errno_trap()
1788 info.si_code = TRAP_HWBKPT; in force_sig_ptrace_errno_trap()
1789 info.si_addr = addr; in force_sig_ptrace_errno_trap()
1790 return force_sig_info(&info); in force_sig_ptrace_errno_trap()
1857 int sig = q->info.si_signo; in send_sigqueue()
1882 BUG_ON(q->info.si_code != SI_TIMER); in send_sigqueue()
1883 q->info.si_overrun++; in send_sigqueue()
1887 q->info.si_overrun = 0; in send_sigqueue()
1896 trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result); in send_sigqueue()
1921 struct kernel_siginfo info; in do_notify_parent() local
1947 clear_siginfo(&info); in do_notify_parent()
1948 info.si_signo = sig; in do_notify_parent()
1949 info.si_errno = 0; in do_notify_parent()
1962 info.si_pid = task_pid_nr_ns(tsk, task_active_pid_ns(tsk->parent)); in do_notify_parent()
1963 info.si_uid = from_kuid_munged(task_cred_xxx(tsk->parent, user_ns), in do_notify_parent()
1968 info.si_utime = nsec_to_clock_t(utime + tsk->signal->utime); in do_notify_parent()
1969 info.si_stime = nsec_to_clock_t(stime + tsk->signal->stime); in do_notify_parent()
1971 info.si_status = tsk->exit_code & 0x7f; in do_notify_parent()
1973 info.si_code = CLD_DUMPED; in do_notify_parent()
1975 info.si_code = CLD_KILLED; in do_notify_parent()
1977 info.si_code = CLD_EXITED; in do_notify_parent()
1978 info.si_status = tsk->exit_code >> 8; in do_notify_parent()
2010 __send_signal(sig, &info, tsk->parent, PIDTYPE_TGID, false); in do_notify_parent()
2033 struct kernel_siginfo info; in do_notify_parent_cldstop() local
2046 clear_siginfo(&info); in do_notify_parent_cldstop()
2047 info.si_signo = SIGCHLD; in do_notify_parent_cldstop()
2048 info.si_errno = 0; in do_notify_parent_cldstop()
2053 info.si_pid = task_pid_nr_ns(tsk, task_active_pid_ns(parent)); in do_notify_parent_cldstop()
2054 info.si_uid = from_kuid_munged(task_cred_xxx(parent, user_ns), task_uid(tsk)); in do_notify_parent_cldstop()
2058 info.si_utime = nsec_to_clock_t(utime); in do_notify_parent_cldstop()
2059 info.si_stime = nsec_to_clock_t(stime); in do_notify_parent_cldstop()
2061 info.si_code = why; in do_notify_parent_cldstop()
2064 info.si_status = SIGCONT; in do_notify_parent_cldstop()
2067 info.si_status = tsk->signal->group_exit_code & 0x7f; in do_notify_parent_cldstop()
2070 info.si_status = tsk->exit_code & 0x7f; in do_notify_parent_cldstop()
2080 __group_send_sig_info(SIGCHLD, &info, parent); in do_notify_parent_cldstop()
2124 static void ptrace_stop(int exit_code, int why, int clear_code, kernel_siginfo_t *info) in ptrace_stop() argument
2130 if (arch_ptrace_stop_needed(exit_code, info)) { in ptrace_stop()
2140 arch_ptrace_stop(exit_code, info); in ptrace_stop()
2170 current->last_siginfo = info; in ptrace_stop()
2185 if (info && info->si_code >> 8 == PTRACE_EVENT_STOP) in ptrace_stop()
2262 kernel_siginfo_t info; in ptrace_do_notify() local
2264 clear_siginfo(&info); in ptrace_do_notify()
2265 info.si_signo = signr; in ptrace_do_notify()
2266 info.si_code = exit_code; in ptrace_do_notify()
2267 info.si_pid = task_pid_vnr(current); in ptrace_do_notify()
2268 info.si_uid = from_kuid_munged(current_user_ns(), current_uid()); in ptrace_do_notify()
2271 ptrace_stop(exit_code, why, 1, &info); in ptrace_do_notify()
2481 static int ptrace_signal(int signr, kernel_siginfo_t *info) in ptrace_signal() argument
2493 ptrace_stop(signr, CLD_TRAPPED, 0, info); in ptrace_signal()
2508 if (signr != info->si_signo) { in ptrace_signal()
2509 clear_siginfo(info); in ptrace_signal()
2510 info->si_signo = signr; in ptrace_signal()
2511 info->si_errno = 0; in ptrace_signal()
2512 info->si_code = SI_USER; in ptrace_signal()
2514 info->si_pid = task_pid_vnr(current->parent); in ptrace_signal()
2515 info->si_uid = from_kuid_munged(current_user_ns(), in ptrace_signal()
2522 send_signal(signr, info, current, PIDTYPE_PID); in ptrace_signal()
2531 switch (siginfo_layout(ksig->sig, ksig->info.si_code)) { in hide_si_addr_tag_bits()
2536 ksig->info.si_addr = arch_untagged_si_addr( in hide_si_addr_tag_bits()
2537 ksig->info.si_addr, ksig->sig, ksig->info.si_code); in hide_si_addr_tag_bits()
2621 ksig->info.si_signo = signr = SIGKILL; in get_signal()
2663 signr = dequeue_synchronous_signal(&ksig->info); in get_signal()
2665 signr = dequeue_signal(current, &current->blocked, &ksig->info); in get_signal()
2671 signr = ptrace_signal(signr, &ksig->info); in get_signal()
2679 trace_signal_deliver(signr, &ksig->info, ka); in get_signal()
2735 if (likely(do_signal_stop(ksig->info.si_signo))) { in get_signal()
2759 print_fatal_signal(ksig->info.si_signo); in get_signal()
2769 do_coredump(&ksig->info); in get_signal()
2783 do_group_exit(ksig->info.si_signo); in get_signal()
3231 static inline char __user *si_expansion(const siginfo_t __user *info) in si_expansion() argument
3233 return ((char __user *)info) + sizeof(struct kernel_siginfo); in si_expansion()
3246 static int post_copy_siginfo_from_user(kernel_siginfo_t *info, in post_copy_siginfo_from_user() argument
3249 if (unlikely(!known_siginfo_layout(info->si_signo, info->si_code))) { in post_copy_siginfo_from_user()
3485 static int do_sigtimedwait(const sigset_t *which, kernel_siginfo_t *info, in do_sigtimedwait() argument
3507 sig = dequeue_signal(tsk, &mask, info); in do_sigtimedwait()
3526 sig = dequeue_signal(tsk, &mask, info); in do_sigtimedwait()
3550 kernel_siginfo_t info; in SYSCALL_DEFINE4() local
3565 ret = do_sigtimedwait(&these, &info, uts ? &ts : NULL); in SYSCALL_DEFINE4()
3568 if (copy_siginfo_to_user(uinfo, &info)) in SYSCALL_DEFINE4()
3583 kernel_siginfo_t info; in SYSCALL_DEFINE4() local
3597 ret = do_sigtimedwait(&these, &info, uts ? &ts : NULL); in SYSCALL_DEFINE4()
3600 if (copy_siginfo_to_user(uinfo, &info)) in SYSCALL_DEFINE4()
3615 kernel_siginfo_t info; in COMPAT_SYSCALL_DEFINE4() local
3629 ret = do_sigtimedwait(&s, &info, uts ? &t : NULL); in COMPAT_SYSCALL_DEFINE4()
3632 if (copy_siginfo_to_user32(uinfo, &info)) in COMPAT_SYSCALL_DEFINE4()
3646 kernel_siginfo_t info; in COMPAT_SYSCALL_DEFINE4() local
3660 ret = do_sigtimedwait(&s, &info, uts ? &t : NULL); in COMPAT_SYSCALL_DEFINE4()
3663 if (copy_siginfo_to_user32(uinfo, &info)) in COMPAT_SYSCALL_DEFINE4()
3672 static inline void prepare_kill_siginfo(int sig, struct kernel_siginfo *info) in prepare_kill_siginfo() argument
3674 clear_siginfo(info); in prepare_kill_siginfo()
3675 info->si_signo = sig; in prepare_kill_siginfo()
3676 info->si_errno = 0; in prepare_kill_siginfo()
3677 info->si_code = SI_USER; in prepare_kill_siginfo()
3678 info->si_pid = task_tgid_vnr(current); in prepare_kill_siginfo()
3679 info->si_uid = from_kuid_munged(current_user_ns(), current_uid()); in prepare_kill_siginfo()
3689 struct kernel_siginfo info; in SYSCALL_DEFINE2() local
3691 prepare_kill_siginfo(sig, &info); in SYSCALL_DEFINE2()
3693 return kill_something_info(sig, &info, pid); in SYSCALL_DEFINE2()
3717 static int copy_siginfo_from_user_any(kernel_siginfo_t *kinfo, siginfo_t *info) in copy_siginfo_from_user_any() argument
3727 kinfo, (struct compat_siginfo __user *)info); in copy_siginfo_from_user_any()
3729 return copy_siginfo_from_user(kinfo, info); in copy_siginfo_from_user_any()
3762 siginfo_t __user *, info, unsigned int, flags) in SYSCALL_DEFINE4() argument
3788 if (info) { in SYSCALL_DEFINE4()
3789 ret = copy_siginfo_from_user_any(&kinfo, info); in SYSCALL_DEFINE4()
3814 do_send_specific(pid_t tgid, pid_t pid, int sig, struct kernel_siginfo *info) in do_send_specific() argument
3822 error = check_kill_permission(sig, info, p); in do_send_specific()
3828 error = do_send_sig_info(sig, info, p, PIDTYPE_PID); in do_send_specific()
3845 struct kernel_siginfo info; in do_tkill() local
3847 clear_siginfo(&info); in do_tkill()
3848 info.si_signo = sig; in do_tkill()
3849 info.si_errno = 0; in do_tkill()
3850 info.si_code = SI_TKILL; in do_tkill()
3851 info.si_pid = task_tgid_vnr(current); in do_tkill()
3852 info.si_uid = from_kuid_munged(current_user_ns(), current_uid()); in do_tkill()
3854 return do_send_specific(tgid, pid, sig, &info); in do_tkill()
3892 static int do_rt_sigqueueinfo(pid_t pid, int sig, kernel_siginfo_t *info) in do_rt_sigqueueinfo() argument
3897 if ((info->si_code >= 0 || info->si_code == SI_TKILL) && in do_rt_sigqueueinfo()
3902 return kill_proc_info(sig, info, pid); in do_rt_sigqueueinfo()
3914 kernel_siginfo_t info; in SYSCALL_DEFINE3() local
3915 int ret = __copy_siginfo_from_user(sig, &info, uinfo); in SYSCALL_DEFINE3()
3918 return do_rt_sigqueueinfo(pid, sig, &info); in SYSCALL_DEFINE3()
3927 kernel_siginfo_t info; in COMPAT_SYSCALL_DEFINE3() local
3928 int ret = __copy_siginfo_from_user32(sig, &info, uinfo); in COMPAT_SYSCALL_DEFINE3()
3931 return do_rt_sigqueueinfo(pid, sig, &info); in COMPAT_SYSCALL_DEFINE3()
3935 static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, kernel_siginfo_t *info) in do_rt_tgsigqueueinfo() argument
3944 if ((info->si_code >= 0 || info->si_code == SI_TKILL) && in do_rt_tgsigqueueinfo()
3948 return do_send_specific(tgid, pid, sig, info); in do_rt_tgsigqueueinfo()
3954 kernel_siginfo_t info; in SYSCALL_DEFINE4() local
3955 int ret = __copy_siginfo_from_user(sig, &info, uinfo); in SYSCALL_DEFINE4()
3958 return do_rt_tgsigqueueinfo(tgid, pid, sig, &info); in SYSCALL_DEFINE4()
3968 kernel_siginfo_t info; in COMPAT_SYSCALL_DEFINE4() local
3969 int ret = __copy_siginfo_from_user32(sig, &info, uinfo); in COMPAT_SYSCALL_DEFINE4()
3972 return do_rt_tgsigqueueinfo(tgid, pid, sig, &info); in COMPAT_SYSCALL_DEFINE4()