Lines Matching refs:task
173 static bool ptrace_freeze_traced(struct task_struct *task) in ptrace_freeze_traced() argument
178 if (task->jobctl & JOBCTL_LISTENING) in ptrace_freeze_traced()
181 spin_lock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
182 if (task_is_traced(task) && !__fatal_signal_pending(task)) { in ptrace_freeze_traced()
183 task->state = __TASK_TRACED; in ptrace_freeze_traced()
186 spin_unlock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
191 static void ptrace_unfreeze_traced(struct task_struct *task) in ptrace_unfreeze_traced() argument
193 if (task->state != __TASK_TRACED) in ptrace_unfreeze_traced()
196 WARN_ON(!task->ptrace || task->parent != current); in ptrace_unfreeze_traced()
202 spin_lock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
203 if (task->state == __TASK_TRACED) { in ptrace_unfreeze_traced()
204 if (__fatal_signal_pending(task)) in ptrace_unfreeze_traced()
205 wake_up_state(task, __TASK_TRACED); in ptrace_unfreeze_traced()
207 task->state = TASK_TRACED; in ptrace_unfreeze_traced()
209 spin_unlock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
281 static int __ptrace_may_access(struct task_struct *task, unsigned int mode) in __ptrace_may_access() argument
303 if (same_thread_group(task, current)) in __ptrace_may_access()
321 tcred = __task_cred(task); in __ptrace_may_access()
345 mm = task->mm; in __ptrace_may_access()
351 return security_ptrace_access_check(task, mode); in __ptrace_may_access()
354 bool ptrace_may_access(struct task_struct *task, unsigned int mode) in ptrace_may_access() argument
357 task_lock(task); in ptrace_may_access()
358 err = __ptrace_may_access(task, mode); in ptrace_may_access()
359 task_unlock(task); in ptrace_may_access()
363 static int ptrace_attach(struct task_struct *task, long request, in ptrace_attach() argument
381 audit_ptrace(task); in ptrace_attach()
384 if (unlikely(task->flags & PF_KTHREAD)) in ptrace_attach()
386 if (same_thread_group(task, current)) in ptrace_attach()
395 if (mutex_lock_interruptible(&task->signal->cred_guard_mutex)) in ptrace_attach()
398 task_lock(task); in ptrace_attach()
399 retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH_REALCREDS); in ptrace_attach()
400 task_unlock(task); in ptrace_attach()
406 if (unlikely(task->exit_state)) in ptrace_attach()
408 if (task->ptrace) in ptrace_attach()
413 task->ptrace = flags; in ptrace_attach()
415 ptrace_link(task, current); in ptrace_attach()
419 send_sig_info(SIGSTOP, SEND_SIG_PRIV, task); in ptrace_attach()
421 spin_lock(&task->sighand->siglock); in ptrace_attach()
440 if (task_is_stopped(task) && in ptrace_attach()
441 task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING)) in ptrace_attach()
442 signal_wake_up_state(task, __TASK_STOPPED); in ptrace_attach()
444 spin_unlock(&task->sighand->siglock); in ptrace_attach()
450 mutex_unlock(&task->signal->cred_guard_mutex); in ptrace_attach()
460 wait_on_bit(&task->jobctl, JOBCTL_TRAPPING_BIT, TASK_KILLABLE); in ptrace_attach()
461 proc_ptrace_connector(task, PTRACE_ATTACH); in ptrace_attach()
879 static int ptrace_regset(struct task_struct *task, int req, unsigned int type, in ptrace_regset() argument
882 const struct user_regset_view *view = task_user_regset_view(task); in ptrace_regset()
894 return copy_regset_to_user(task, view, regset_no, 0, in ptrace_regset()
897 return copy_regset_from_user(task, view, regset_no, 0, in ptrace_regset()