Lines Matching +full:protect +full:- +full:exec
1 /* SPDX-License-Identifier: GPL-2.0 */
12 #include <linux/posix-timers.h>
17 * Types defining task->signal and task->sighand and APIs using them:
28 * Per-process accounting stats:
60 * struct thread_group_cputimer - thread group interval timer counts
90 /* current thread group signal load-balancing target: */
102 * - notify group_exit_task when ->count is equal to notify_count
103 * - everyone except group_exit_task is stopped during signal delivery
115 * manager, to re-parent orphan (double-forking) child processes
199 * getrlimit/setrlimit use task_lock(current->group_leader) to
200 * protect this instead of the siglock, because they really
206 struct pacct_struct pacct; /* per-process accounting information */
234 * updated during exec, and may have
261 WARN_ON(sig->flags & (SIGNAL_GROUP_EXIT|SIGNAL_GROUP_COREDUMP)); in signal_set_stop_flags()
262 sig->flags = (sig->flags & ~SIGNAL_STOP_MASK) | flags; in signal_set_stop_flags()
265 /* If true, all threads except ->group_exit_task have pending SIGKILL */
268 return (sig->flags & SIGNAL_GROUP_EXIT) || in signal_group_exit()
269 (sig->group_exit_task != NULL); in signal_group_exit()
284 spin_lock_irq(&task->sighand->siglock); in kernel_dequeue_signal()
285 ret = dequeue_signal(task, &task->blocked, &__info); in kernel_dequeue_signal()
286 spin_unlock_irq(&task->sighand->siglock); in kernel_dequeue_signal()
293 spin_lock_irq(¤t->sighand->siglock); in kernel_signal_stop()
294 if (current->jobctl & JOBCTL_STOP_DEQUEUED) in kernel_signal_stop()
296 spin_unlock_irq(¤t->sighand->siglock); in kernel_signal_stop()
353 return -ERESTARTNOINTR; in restart_syscall()
363 return unlikely(sigismember(&p->pending.signal, SIGKILL)); in __fatal_signal_pending()
399 * callers must hold sighand->siglock.
425 * set_restore_sigmask() - make sure saved_sigmask processing gets done
464 /* Higher-quality implementation, used if TIF_RESTORE_SIGMASK doesn't exist. */
467 current->restore_sigmask = true; in set_restore_sigmask()
471 task->restore_sigmask = false; in clear_tsk_restore_sigmask()
475 current->restore_sigmask = false; in clear_restore_sigmask()
479 return current->restore_sigmask; in test_restore_sigmask()
483 return task->restore_sigmask; in test_tsk_restore_sigmask()
487 if (!current->restore_sigmask) in test_and_clear_restore_sigmask()
489 current->restore_sigmask = false; in test_and_clear_restore_sigmask()
497 __set_current_blocked(¤t->saved_sigmask); in restore_saved_sigmask()
512 sigset_t *res = ¤t->blocked; in sigmask_to_save()
514 res = ¤t->saved_sigmask; in sigmask_to_save()
541 if (current->sas_ss_flags & SS_AUTODISARM) in on_sig_stack()
545 return sp >= current->sas_ss_sp && in on_sig_stack()
546 sp - current->sas_ss_sp < current->sas_ss_size; in on_sig_stack()
548 return sp > current->sas_ss_sp && in on_sig_stack()
549 sp - current->sas_ss_sp <= current->sas_ss_size; in on_sig_stack()
555 if (!current->sas_ss_size) in sas_ss_flags()
563 p->sas_ss_sp = 0; in sas_ss_reset()
564 p->sas_ss_size = 0; in sas_ss_reset()
565 p->sas_ss_flags = SS_DISABLE; in sas_ss_reset()
570 if (unlikely((ksig->ka.sa.sa_flags & SA_ONSTACK)) && ! sas_ss_flags(sp)) in sigsp()
572 return current->sas_ss_sp; in sigsp()
574 return current->sas_ss_sp + current->sas_ss_size; in sigsp()
586 list_entry_rcu((p)->tasks.next, struct task_struct, tasks)
595 * 'break' will not work as expected - use goto instead.
604 list_for_each_entry_rcu(t, &(signal)->thread_head, thread_node)
607 __for_each_thread((p)->signal, t)
623 pid = task->signal->pids[type]; in task_pid_type()
629 return task->signal->pids[PIDTYPE_TGID]; in task_tgid()
639 return task->signal->pids[PIDTYPE_PGID]; in task_pgrp()
644 return task->signal->pids[PIDTYPE_SID]; in task_session()
649 return task->signal->nr_threads; in get_nr_threads()
654 return p->exit_signal >= 0; in thread_group_leader()
660 return p1->signal == p2->signal; in same_thread_group()
665 return list_entry_rcu(p->thread_group.next, in next_thread()
671 return list_empty(&p->thread_group); in thread_group_empty()
688 (void)__cond_lock(&task->sighand->siglock, ret); in lock_task_sighand()
695 spin_unlock_irqrestore(&task->sighand->siglock, *flags); in unlock_task_sighand()
701 return READ_ONCE(task->signal->rlim[limit].rlim_cur); in task_rlimit()
707 return READ_ONCE(task->signal->rlim[limit].rlim_max); in task_rlimit_max()