Lines Matching refs:task
165 static bool ptrace_freeze_traced(struct task_struct *task) in ptrace_freeze_traced() argument
170 if (task->jobctl & JOBCTL_LISTENING) in ptrace_freeze_traced()
173 spin_lock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
174 if (task_is_traced(task) && !__fatal_signal_pending(task)) { in ptrace_freeze_traced()
175 task->state = __TASK_TRACED; in ptrace_freeze_traced()
178 spin_unlock_irq(&task->sighand->siglock); in ptrace_freeze_traced()
183 static void ptrace_unfreeze_traced(struct task_struct *task) in ptrace_unfreeze_traced() argument
185 if (task->state != __TASK_TRACED) in ptrace_unfreeze_traced()
188 WARN_ON(!task->ptrace || task->parent != current); in ptrace_unfreeze_traced()
194 spin_lock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
195 if (task->state == __TASK_TRACED) { in ptrace_unfreeze_traced()
196 if (__fatal_signal_pending(task)) in ptrace_unfreeze_traced()
197 wake_up_state(task, __TASK_TRACED); in ptrace_unfreeze_traced()
199 task->state = TASK_TRACED; in ptrace_unfreeze_traced()
201 spin_unlock_irq(&task->sighand->siglock); in ptrace_unfreeze_traced()
268 static int __ptrace_may_access(struct task_struct *task, unsigned int mode) in __ptrace_may_access() argument
290 if (same_thread_group(task, current)) in __ptrace_may_access()
308 tcred = __task_cred(task); in __ptrace_may_access()
322 mm = task->mm; in __ptrace_may_access()
328 return security_ptrace_access_check(task, mode); in __ptrace_may_access()
331 bool ptrace_may_access(struct task_struct *task, unsigned int mode) in ptrace_may_access() argument
334 task_lock(task); in ptrace_may_access()
335 err = __ptrace_may_access(task, mode); in ptrace_may_access()
336 task_unlock(task); in ptrace_may_access()
340 static int ptrace_attach(struct task_struct *task, long request, in ptrace_attach() argument
358 audit_ptrace(task); in ptrace_attach()
361 if (unlikely(task->flags & PF_KTHREAD)) in ptrace_attach()
363 if (same_thread_group(task, current)) in ptrace_attach()
372 if (mutex_lock_interruptible(&task->signal->cred_guard_mutex)) in ptrace_attach()
375 task_lock(task); in ptrace_attach()
376 retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH_REALCREDS); in ptrace_attach()
377 task_unlock(task); in ptrace_attach()
383 if (unlikely(task->exit_state)) in ptrace_attach()
385 if (task->ptrace) in ptrace_attach()
390 task->ptrace = flags; in ptrace_attach()
392 ptrace_link(task, current); in ptrace_attach()
396 send_sig_info(SIGSTOP, SEND_SIG_FORCED, task); in ptrace_attach()
398 spin_lock(&task->sighand->siglock); in ptrace_attach()
417 if (task_is_stopped(task) && in ptrace_attach()
418 task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING)) in ptrace_attach()
419 signal_wake_up_state(task, __TASK_STOPPED); in ptrace_attach()
421 spin_unlock(&task->sighand->siglock); in ptrace_attach()
427 mutex_unlock(&task->signal->cred_guard_mutex); in ptrace_attach()
437 wait_on_bit(&task->jobctl, JOBCTL_TRAPPING_BIT, TASK_KILLABLE); in ptrace_attach()
438 proc_ptrace_connector(task, PTRACE_ATTACH); in ptrace_attach()
852 static int ptrace_regset(struct task_struct *task, int req, unsigned int type, in ptrace_regset() argument
855 const struct user_regset_view *view = task_user_regset_view(task); in ptrace_regset()
867 return copy_regset_to_user(task, view, regset_no, 0, in ptrace_regset()
870 return copy_regset_from_user(task, view, regset_no, 0, in ptrace_regset()