Lines Matching refs:task
157 static int get_task_root(struct task_struct *task, struct path *root) in get_task_root() argument
161 task_lock(task); in get_task_root()
162 if (task->fs) { in get_task_root()
163 get_fs_root(task->fs, root); in get_task_root()
166 task_unlock(task); in get_task_root()
172 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_cwd_link() local
175 if (task) { in proc_cwd_link()
176 task_lock(task); in proc_cwd_link()
177 if (task->fs) { in proc_cwd_link()
178 get_fs_pwd(task->fs, path); in proc_cwd_link()
181 task_unlock(task); in proc_cwd_link()
182 put_task_struct(task); in proc_cwd_link()
189 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_root_link() local
192 if (task) { in proc_root_link()
193 result = get_task_root(task, path); in proc_root_link()
194 put_task_struct(task); in proc_root_link()
404 struct pid *pid, struct task_struct *task) in proc_pid_auxv() argument
406 struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in proc_pid_auxv()
426 struct pid *pid, struct task_struct *task) in proc_pid_wchan() argument
431 wchan = get_wchan(task); in proc_pid_wchan()
433 if (wchan && ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS) in proc_pid_wchan()
443 static int lock_trace(struct task_struct *task) in lock_trace() argument
445 int err = mutex_lock_killable(&task->signal->cred_guard_mutex); in lock_trace()
448 if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) { in lock_trace()
449 mutex_unlock(&task->signal->cred_guard_mutex); in lock_trace()
455 static void unlock_trace(struct task_struct *task) in unlock_trace() argument
457 mutex_unlock(&task->signal->cred_guard_mutex); in unlock_trace()
465 struct pid *pid, struct task_struct *task) in proc_pid_stack() argument
481 err = lock_trace(task); in proc_pid_stack()
483 save_stack_trace_tsk(task, &trace); in proc_pid_stack()
489 unlock_trace(task); in proc_pid_stack()
502 struct pid *pid, struct task_struct *task) in proc_pid_schedstat() argument
508 (unsigned long long)task->se.sum_exec_runtime, in proc_pid_schedstat()
509 (unsigned long long)task->sched_info.run_delay, in proc_pid_schedstat()
510 task->sched_info.pcount); in proc_pid_schedstat()
521 struct task_struct *task = get_proc_task(inode); in lstats_show_proc() local
523 if (!task) in lstats_show_proc()
527 struct latency_record *lr = &task->latency_record[i]; in lstats_show_proc()
544 put_task_struct(task); in lstats_show_proc()
556 struct task_struct *task = get_proc_task(file_inode(file)); in lstats_write() local
558 if (!task) in lstats_write()
560 clear_all_latency_tracing(task); in lstats_write()
561 put_task_struct(task); in lstats_write()
577 struct pid *pid, struct task_struct *task) in proc_oom_score() argument
583 if (pid_alive(task)) in proc_oom_score()
584 points = oom_badness(task, NULL, NULL, totalpages) * in proc_oom_score()
618 struct pid *pid, struct task_struct *task) in proc_pid_limits() argument
625 if (!lock_task_sighand(task, &flags)) in proc_pid_limits()
627 memcpy(rlim, task->signal->rlim, sizeof(struct rlimit) * RLIM_NLIMITS); in proc_pid_limits()
628 unlock_task_sighand(task, &flags); in proc_pid_limits()
660 struct pid *pid, struct task_struct *task) in proc_pid_syscall() argument
666 res = lock_trace(task); in proc_pid_syscall()
670 if (task_current_syscall(task, &nr, args, 6, &sp, &pc)) in proc_pid_syscall()
680 unlock_trace(task); in proc_pid_syscall()
693 struct task_struct *task; in proc_fd_access_allowed() local
699 task = get_proc_task(inode); in proc_fd_access_allowed()
700 if (task) { in proc_fd_access_allowed()
701 allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in proc_fd_access_allowed()
702 put_task_struct(task); in proc_fd_access_allowed()
729 struct task_struct *task, in has_pid_permissions() argument
736 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
743 struct task_struct *task; in proc_pid_permission() local
746 task = get_proc_task(inode); in proc_pid_permission()
747 if (!task) in proc_pid_permission()
749 has_perms = has_pid_permissions(pid, task, 1); in proc_pid_permission()
750 put_task_struct(task); in proc_pid_permission()
779 struct task_struct *task; in proc_single_show() local
784 task = get_pid_task(pid, PIDTYPE_PID); in proc_single_show()
785 if (!task) in proc_single_show()
788 ret = PROC_I(inode)->op.proc_show(m, ns, pid, task); in proc_single_show()
790 put_task_struct(task); in proc_single_show()
809 struct task_struct *task = get_proc_task(inode); in proc_mem_open() local
812 if (task) { in proc_mem_open()
813 mm = mm_access(task, mode | PTRACE_MODE_FSCREDS); in proc_mem_open()
814 put_task_struct(task); in proc_mem_open()
1016 struct task_struct *task = get_proc_task(file_inode(file)); in oom_adj_read() local
1022 if (!task) in oom_adj_read()
1024 if (lock_task_sighand(task, &flags)) { in oom_adj_read()
1025 if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MAX) in oom_adj_read()
1028 oom_adj = (task->signal->oom_score_adj * -OOM_DISABLE) / in oom_adj_read()
1030 unlock_task_sighand(task, &flags); in oom_adj_read()
1032 put_task_struct(task); in oom_adj_read()
1050 struct task_struct *task; in oom_adj_write() local
1073 task = get_proc_task(file_inode(file)); in oom_adj_write()
1074 if (!task) { in oom_adj_write()
1079 task_lock(task); in oom_adj_write()
1080 if (!task->mm) { in oom_adj_write()
1085 if (!lock_task_sighand(task, &flags)) { in oom_adj_write()
1099 if (oom_adj < task->signal->oom_score_adj && in oom_adj_write()
1110 current->comm, task_pid_nr(current), task_pid_nr(task), in oom_adj_write()
1111 task_pid_nr(task)); in oom_adj_write()
1113 task->signal->oom_score_adj = oom_adj; in oom_adj_write()
1114 trace_oom_score_adj_update(task); in oom_adj_write()
1116 unlock_task_sighand(task, &flags); in oom_adj_write()
1118 task_unlock(task); in oom_adj_write()
1119 put_task_struct(task); in oom_adj_write()
1133 struct task_struct *task = get_proc_task(file_inode(file)); in oom_score_adj_read() local
1139 if (!task) in oom_score_adj_read()
1141 if (lock_task_sighand(task, &flags)) { in oom_score_adj_read()
1142 oom_score_adj = task->signal->oom_score_adj; in oom_score_adj_read()
1143 unlock_task_sighand(task, &flags); in oom_score_adj_read()
1145 put_task_struct(task); in oom_score_adj_read()
1153 struct task_struct *task; in oom_score_adj_write() local
1176 task = get_proc_task(file_inode(file)); in oom_score_adj_write()
1177 if (!task) { in oom_score_adj_write()
1182 task_lock(task); in oom_score_adj_write()
1183 if (!task->mm) { in oom_score_adj_write()
1188 if (!lock_task_sighand(task, &flags)) { in oom_score_adj_write()
1193 if ((short)oom_score_adj < task->signal->oom_score_adj_min && in oom_score_adj_write()
1199 task->signal->oom_score_adj = (short)oom_score_adj; in oom_score_adj_write()
1201 task->signal->oom_score_adj_min = (short)oom_score_adj; in oom_score_adj_write()
1202 trace_oom_score_adj_update(task); in oom_score_adj_write()
1205 unlock_task_sighand(task, &flags); in oom_score_adj_write()
1207 task_unlock(task); in oom_score_adj_write()
1208 put_task_struct(task); in oom_score_adj_write()
1225 struct task_struct *task = get_proc_task(inode); in proc_loginuid_read() local
1229 if (!task) in proc_loginuid_read()
1233 audit_get_loginuid(task))); in proc_loginuid_read()
1234 put_task_struct(task); in proc_loginuid_read()
1287 struct task_struct *task = get_proc_task(inode); in proc_sessionid_read() local
1291 if (!task) in proc_sessionid_read()
1294 audit_get_sessionid(task)); in proc_sessionid_read()
1295 put_task_struct(task); in proc_sessionid_read()
1309 struct task_struct *task = get_proc_task(file_inode(file)); in proc_fault_inject_read() local
1314 if (!task) in proc_fault_inject_read()
1316 make_it_fail = task->make_it_fail; in proc_fault_inject_read()
1317 put_task_struct(task); in proc_fault_inject_read()
1327 struct task_struct *task; in proc_fault_inject_write() local
1345 task = get_proc_task(file_inode(file)); in proc_fault_inject_write()
1346 if (!task) in proc_fault_inject_write()
1348 task->make_it_fail = make_it_fail; in proc_fault_inject_write()
1349 put_task_struct(task); in proc_fault_inject_write()
1547 struct task_struct *task; in proc_exe_link() local
1551 task = get_proc_task(d_inode(dentry)); in proc_exe_link()
1552 if (!task) in proc_exe_link()
1554 mm = get_task_mm(task); in proc_exe_link()
1555 put_task_struct(task); in proc_exe_link()
1642 struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *task) in proc_pid_make_inode() argument
1663 ei->pid = get_task_pid(task, PIDTYPE_PID); in proc_pid_make_inode()
1667 if (task_dumpable(task)) { in proc_pid_make_inode()
1669 cred = __task_cred(task); in proc_pid_make_inode()
1674 security_task_to_inode(task, inode); in proc_pid_make_inode()
1687 struct task_struct *task; in pid_getattr() local
1696 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_getattr()
1697 if (task) { in pid_getattr()
1698 if (!has_pid_permissions(pid, task, 2)) { in pid_getattr()
1707 task_dumpable(task)) { in pid_getattr()
1708 cred = __task_cred(task); in pid_getattr()
1737 struct task_struct *task; in pid_revalidate() local
1744 task = get_proc_task(inode); in pid_revalidate()
1746 if (task) { in pid_revalidate()
1748 task_dumpable(task)) { in pid_revalidate()
1750 cred = __task_cred(task); in pid_revalidate()
1759 security_task_to_inode(task, inode); in pid_revalidate()
1760 put_task_struct(task); in pid_revalidate()
1802 instantiate_t instantiate, struct task_struct *task, const void *ptr) in proc_fill_cache() argument
1815 if (instantiate(d_inode(dir), child, task, ptr) < 0) { in proc_fill_cache()
1848 struct task_struct *task; in map_files_d_revalidate() local
1857 task = get_proc_task(inode); in map_files_d_revalidate()
1858 if (!task) in map_files_d_revalidate()
1861 mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in map_files_d_revalidate()
1874 if (task_dumpable(task)) { in map_files_d_revalidate()
1876 cred = __task_cred(task); in map_files_d_revalidate()
1884 security_task_to_inode(task, inode); in map_files_d_revalidate()
1889 put_task_struct(task); in map_files_d_revalidate()
1904 struct task_struct *task; in proc_map_files_get_link() local
1909 task = get_proc_task(d_inode(dentry)); in proc_map_files_get_link()
1910 if (!task) in proc_map_files_get_link()
1913 mm = get_task_mm(task); in proc_map_files_get_link()
1914 put_task_struct(task); in proc_map_files_get_link()
1969 struct task_struct *task, const void *ptr) in proc_map_files_instantiate() argument
1975 inode = proc_pid_make_inode(dir->i_sb, task); in proc_map_files_instantiate()
2002 struct task_struct *task; in proc_map_files_lookup() local
2007 task = get_proc_task(dir); in proc_map_files_lookup()
2008 if (!task) in proc_map_files_lookup()
2012 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_lookup()
2019 mm = get_task_mm(task); in proc_map_files_lookup()
2029 result = proc_map_files_instantiate(dir, dentry, task, in proc_map_files_lookup()
2036 put_task_struct(task); in proc_map_files_lookup()
2051 struct task_struct *task; in proc_map_files_readdir() local
2060 task = get_proc_task(file_inode(file)); in proc_map_files_readdir()
2061 if (!task) in proc_map_files_readdir()
2065 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_readdir()
2072 mm = get_task_mm(task); in proc_map_files_readdir()
2128 task, in proc_map_files_readdir()
2138 put_task_struct(task); in proc_map_files_readdir()
2151 struct task_struct *task; member
2161 tp->task = get_pid_task(tp->pid, PIDTYPE_PID); in timers_start()
2162 if (!tp->task) in timers_start()
2165 tp->sighand = lock_task_sighand(tp->task, &tp->flags); in timers_start()
2169 return seq_list_start(&tp->task->signal->posix_timers, *pos); in timers_start()
2175 return seq_list_next(v, &tp->task->signal->posix_timers, pos); in timers_next()
2183 unlock_task_sighand(tp->task, &tp->flags); in timers_stop()
2187 if (tp->task) { in timers_stop()
2188 put_task_struct(tp->task); in timers_stop()
2189 tp->task = NULL; in timers_stop()
2249 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_pident_instantiate() argument
2255 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pident_instantiate()
2283 struct task_struct *task = get_proc_task(dir); in proc_pident_lookup() local
2288 if (!task) in proc_pident_lookup()
2305 error = proc_pident_instantiate(dir, dentry, task, p); in proc_pident_lookup()
2307 put_task_struct(task); in proc_pident_lookup()
2315 struct task_struct *task = get_proc_task(file_inode(file)); in proc_pident_readdir() local
2318 if (!task) in proc_pident_readdir()
2329 proc_pident_instantiate, task, p)) in proc_pident_readdir()
2334 put_task_struct(task); in proc_pident_readdir()
2345 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_read() local
2347 if (!task) in proc_pid_attr_read()
2350 length = security_getprocattr(task, in proc_pid_attr_read()
2353 put_task_struct(task); in proc_pid_attr_read()
2366 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_write() local
2369 if (!task) in proc_pid_attr_write()
2389 length = mutex_lock_interruptible(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2393 length = security_setprocattr(task, in proc_pid_attr_write()
2396 mutex_unlock(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2400 put_task_struct(task); in proc_pid_attr_write()
2451 struct task_struct *task = get_proc_task(file_inode(file)); in proc_coredump_filter_read() local
2457 if (!task) in proc_coredump_filter_read()
2461 mm = get_task_mm(task); in proc_coredump_filter_read()
2470 put_task_struct(task); in proc_coredump_filter_read()
2480 struct task_struct *task; in proc_coredump_filter_write() local
2492 task = get_proc_task(file_inode(file)); in proc_coredump_filter_write()
2493 if (!task) in proc_coredump_filter_write()
2496 mm = get_task_mm(task); in proc_coredump_filter_write()
2510 put_task_struct(task); in proc_coredump_filter_write()
2525 static int do_io_accounting(struct task_struct *task, struct seq_file *m, int whole) in do_io_accounting() argument
2527 struct task_io_accounting acct = task->ioac; in do_io_accounting()
2531 result = mutex_lock_killable(&task->signal->cred_guard_mutex); in do_io_accounting()
2535 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) { in do_io_accounting()
2540 if (whole && lock_task_sighand(task, &flags)) { in do_io_accounting()
2541 struct task_struct *t = task; in do_io_accounting()
2543 task_io_accounting_add(&acct, &task->signal->ioac); in do_io_accounting()
2544 while_each_thread(task, t) in do_io_accounting()
2547 unlock_task_sighand(task, &flags); in do_io_accounting()
2567 mutex_unlock(&task->signal->cred_guard_mutex); in do_io_accounting()
2572 struct pid *pid, struct task_struct *task) in proc_tid_io_accounting() argument
2574 return do_io_accounting(task, m, 0); in proc_tid_io_accounting()
2578 struct pid *pid, struct task_struct *task) in proc_tgid_io_accounting() argument
2580 return do_io_accounting(task, m, 1); in proc_tgid_io_accounting()
2589 struct task_struct *task; in proc_id_map_open() local
2593 task = get_proc_task(inode); in proc_id_map_open()
2594 if (task) { in proc_id_map_open()
2596 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_id_map_open()
2598 put_task_struct(task); in proc_id_map_open()
2667 struct task_struct *task; in proc_setgroups_open() local
2671 task = get_proc_task(inode); in proc_setgroups_open()
2672 if (task) { in proc_setgroups_open()
2674 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_setgroups_open()
2676 put_task_struct(task); in proc_setgroups_open()
2717 struct pid *pid, struct task_struct *task) in proc_pid_personality() argument
2719 int err = lock_trace(task); in proc_pid_personality()
2721 seq_printf(m, "%08x\n", task->personality); in proc_pid_personality()
2722 unlock_trace(task); in proc_pid_personality()
2922 void proc_flush_task(struct task_struct *task) in proc_flush_task() argument
2928 pid = task_pid(task); in proc_flush_task()
2929 tgid = task_tgid(task); in proc_flush_task()
2940 struct task_struct *task, const void *ptr) in proc_pid_instantiate() argument
2944 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pid_instantiate()
2969 struct task_struct *task; in proc_pid_lookup() local
2979 task = find_task_by_pid_ns(tgid, ns); in proc_pid_lookup()
2980 if (task) in proc_pid_lookup()
2981 get_task_struct(task); in proc_pid_lookup()
2983 if (!task) in proc_pid_lookup()
2986 result = proc_pid_instantiate(dir, dentry, task, NULL); in proc_pid_lookup()
2987 put_task_struct(task); in proc_pid_lookup()
2998 struct task_struct *task; member
3004 if (iter.task) in next_tgid()
3005 put_task_struct(iter.task); in next_tgid()
3008 iter.task = NULL; in next_tgid()
3012 iter.task = pid_task(pid, PIDTYPE_PID); in next_tgid()
3025 if (!iter.task || !has_group_leader_pid(iter.task)) { in next_tgid()
3029 get_task_struct(iter.task); in next_tgid()
3060 iter.task = NULL; in proc_pid_readdir()
3062 iter.task; in proc_pid_readdir()
3066 if (!has_pid_permissions(ns, iter.task, 2)) in proc_pid_readdir()
3072 proc_pid_instantiate, iter.task, NULL)) { in proc_pid_readdir()
3073 put_task_struct(iter.task); in proc_pid_readdir()
3194 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_task_instantiate() argument
3197 inode = proc_pid_make_inode(dir->i_sb, task); in proc_task_instantiate()
3222 struct task_struct *task; in proc_task_lookup() local
3236 task = find_task_by_pid_ns(tid, ns); in proc_task_lookup()
3237 if (task) in proc_task_lookup()
3238 get_task_struct(task); in proc_task_lookup()
3240 if (!task) in proc_task_lookup()
3242 if (!same_thread_group(leader, task)) in proc_task_lookup()
3245 result = proc_task_instantiate(dir, dentry, task, NULL); in proc_task_lookup()
3247 put_task_struct(task); in proc_task_lookup()
3269 struct task_struct *pos, *task; in first_tid() local
3276 task = pid_task(pid, PIDTYPE_PID); in first_tid()
3277 if (!task) in first_tid()
3283 if (pos && same_thread_group(pos, task)) in first_tid()
3288 if (nr >= get_nr_threads(task)) in first_tid()
3294 pos = task = task->group_leader; in first_tid()
3298 } while_each_thread(task, pos); in first_tid()
3335 struct task_struct *task; in proc_task_readdir() local
3351 for (task = first_tid(proc_pid(inode), tid, ctx->pos - 2, ns); in proc_task_readdir()
3352 task; in proc_task_readdir()
3353 task = next_tid(task), ctx->pos++) { in proc_task_readdir()
3356 tid = task_pid_nr_ns(task, ns); in proc_task_readdir()
3359 proc_task_instantiate, task, NULL)) { in proc_task_readdir()
3363 put_task_struct(task); in proc_task_readdir()