Lines Matching refs:task
122 static bool ptrace_freeze_traced(struct task_struct *task) in ptrace_freeze_traced() argument
127 if (task->jobctl & JOBCTL_LISTENING) in ptrace_freeze_traced()
130 spin_lock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
131 if (task_is_traced(task) && !__fatal_signal_pending(task)) { in ptrace_freeze_traced()
132 task->state = __TASK_TRACED; in ptrace_freeze_traced()
135 spin_unlock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
140 static void ptrace_unfreeze_traced(struct task_struct *task) in ptrace_unfreeze_traced() argument
142 if (task->state != __TASK_TRACED) in ptrace_unfreeze_traced()
145 WARN_ON(!task->ptrace || task->parent != current); in ptrace_unfreeze_traced()
147 spin_lock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
148 if (__fatal_signal_pending(task)) in ptrace_unfreeze_traced()
149 wake_up_state(task, __TASK_TRACED); in ptrace_unfreeze_traced()
151 task->state = TASK_TRACED; in ptrace_unfreeze_traced()
152 spin_unlock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
219 static int __ptrace_may_access(struct task_struct *task, unsigned int mode) in __ptrace_may_access() argument
241 if (same_thread_group(task, current)) in __ptrace_may_access()
259 tcred = __task_cred(task); in __ptrace_may_access()
274 if (task->mm) in __ptrace_may_access()
275 dumpable = get_dumpable(task->mm); in __ptrace_may_access()
278 !ptrace_has_cap(__task_cred(task)->user_ns, mode)) { in __ptrace_may_access()
284 return security_ptrace_access_check(task, mode); in __ptrace_may_access()
287 bool ptrace_may_access(struct task_struct *task, unsigned int mode) in ptrace_may_access() argument
290 task_lock(task); in ptrace_may_access()
291 err = __ptrace_may_access(task, mode); in ptrace_may_access()
292 task_unlock(task); in ptrace_may_access()
296 static int ptrace_attach(struct task_struct *task, long request, in ptrace_attach() argument
314 audit_ptrace(task); in ptrace_attach()
317 if (unlikely(task->flags & PF_KTHREAD)) in ptrace_attach()
319 if (same_thread_group(task, current)) in ptrace_attach()
328 if (mutex_lock_interruptible(&task->signal->cred_guard_mutex)) in ptrace_attach()
331 task_lock(task); in ptrace_attach()
332 retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH_REALCREDS); in ptrace_attach()
333 task_unlock(task); in ptrace_attach()
339 if (unlikely(task->exit_state)) in ptrace_attach()
341 if (task->ptrace) in ptrace_attach()
347 if (ns_capable(__task_cred(task)->user_ns, CAP_SYS_PTRACE)) in ptrace_attach()
350 task->ptrace = flags; in ptrace_attach()
352 __ptrace_link(task, current); in ptrace_attach()
356 send_sig_info(SIGSTOP, SEND_SIG_FORCED, task); in ptrace_attach()
358 spin_lock(&task->sighand->siglock); in ptrace_attach()
377 if (task_is_stopped(task) && in ptrace_attach()
378 task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING)) in ptrace_attach()
379 signal_wake_up_state(task, __TASK_STOPPED); in ptrace_attach()
381 spin_unlock(&task->sighand->siglock); in ptrace_attach()
387 mutex_unlock(&task->signal->cred_guard_mutex); in ptrace_attach()
390 wait_on_bit(&task->jobctl, JOBCTL_TRAPPING_BIT, in ptrace_attach()
392 proc_ptrace_connector(task, PTRACE_ATTACH); in ptrace_attach()
792 static int ptrace_regset(struct task_struct *task, int req, unsigned int type, in ptrace_regset() argument
795 const struct user_regset_view *view = task_user_regset_view(task); in ptrace_regset()
807 return copy_regset_to_user(task, view, regset_no, 0, in ptrace_regset()
810 return copy_regset_from_user(task, view, regset_no, 0, in ptrace_regset()