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()
200 struct pid *pid, struct task_struct *task) in proc_pid_cmdline() argument
207 m->count += get_cmdline(task, m->buf, PAGE_SIZE); in proc_pid_cmdline()
212 struct pid *pid, struct task_struct *task) in proc_pid_auxv() argument
214 struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in proc_pid_auxv()
234 struct pid *pid, struct task_struct *task) in proc_pid_wchan() argument
239 wchan = get_wchan(task); in proc_pid_wchan()
241 if (wchan && ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS) in proc_pid_wchan()
251 static int lock_trace(struct task_struct *task) in lock_trace() argument
253 int err = mutex_lock_killable(&task->signal->cred_guard_mutex); in lock_trace()
256 if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) { in lock_trace()
257 mutex_unlock(&task->signal->cred_guard_mutex); in lock_trace()
263 static void unlock_trace(struct task_struct *task) in unlock_trace() argument
265 mutex_unlock(&task->signal->cred_guard_mutex); in unlock_trace()
273 struct pid *pid, struct task_struct *task) in proc_pid_stack() argument
289 err = lock_trace(task); in proc_pid_stack()
291 save_stack_trace_tsk(task, &trace); in proc_pid_stack()
297 unlock_trace(task); in proc_pid_stack()
310 struct pid *pid, struct task_struct *task) in proc_pid_schedstat() argument
313 (unsigned long long)task->se.sum_exec_runtime, in proc_pid_schedstat()
314 (unsigned long long)task->sched_info.run_delay, in proc_pid_schedstat()
315 task->sched_info.pcount); in proc_pid_schedstat()
326 struct task_struct *task = get_proc_task(inode); in lstats_show_proc() local
328 if (!task) in lstats_show_proc()
332 struct latency_record *lr = &task->latency_record[i]; in lstats_show_proc()
349 put_task_struct(task); in lstats_show_proc()
361 struct task_struct *task = get_proc_task(file_inode(file)); in lstats_write() local
363 if (!task) in lstats_write()
365 clear_all_latency_tracing(task); in lstats_write()
366 put_task_struct(task); in lstats_write()
382 struct pid *pid, struct task_struct *task) in proc_oom_score() argument
388 if (pid_alive(task)) in proc_oom_score()
389 points = oom_badness(task, NULL, NULL, totalpages) * in proc_oom_score()
423 struct pid *pid, struct task_struct *task) in proc_pid_limits() argument
430 if (!lock_task_sighand(task, &flags)) in proc_pid_limits()
432 memcpy(rlim, task->signal->rlim, sizeof(struct rlimit) * RLIM_NLIMITS); in proc_pid_limits()
433 unlock_task_sighand(task, &flags); in proc_pid_limits()
465 struct pid *pid, struct task_struct *task) in proc_pid_syscall() argument
471 res = lock_trace(task); in proc_pid_syscall()
475 if (task_current_syscall(task, &nr, args, 6, &sp, &pc)) in proc_pid_syscall()
485 unlock_trace(task); in proc_pid_syscall()
498 struct task_struct *task; in proc_fd_access_allowed() local
504 task = get_proc_task(inode); in proc_fd_access_allowed()
505 if (task) { in proc_fd_access_allowed()
506 allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in proc_fd_access_allowed()
507 put_task_struct(task); in proc_fd_access_allowed()
534 struct task_struct *task, in has_pid_permissions() argument
541 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
548 struct task_struct *task; in proc_pid_permission() local
551 task = get_proc_task(inode); in proc_pid_permission()
552 if (!task) in proc_pid_permission()
554 has_perms = has_pid_permissions(pid, task, 1); in proc_pid_permission()
555 put_task_struct(task); in proc_pid_permission()
584 struct task_struct *task; in proc_single_show() local
589 task = get_pid_task(pid, PIDTYPE_PID); in proc_single_show()
590 if (!task) in proc_single_show()
593 ret = PROC_I(inode)->op.proc_show(m, ns, pid, task); in proc_single_show()
595 put_task_struct(task); in proc_single_show()
614 struct task_struct *task = get_proc_task(inode); in proc_mem_open() local
617 if (task) { in proc_mem_open()
618 mm = mm_access(task, mode | PTRACE_MODE_FSCREDS); in proc_mem_open()
619 put_task_struct(task); in proc_mem_open()
820 struct task_struct *task = get_proc_task(file_inode(file)); in oom_adj_read() local
826 if (!task) in oom_adj_read()
828 if (lock_task_sighand(task, &flags)) { in oom_adj_read()
829 if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MAX) in oom_adj_read()
832 oom_adj = (task->signal->oom_score_adj * -OOM_DISABLE) / in oom_adj_read()
834 unlock_task_sighand(task, &flags); in oom_adj_read()
836 put_task_struct(task); in oom_adj_read()
844 struct task_struct *task; in oom_adj_write() local
867 task = get_proc_task(file_inode(file)); in oom_adj_write()
868 if (!task) { in oom_adj_write()
873 task_lock(task); in oom_adj_write()
874 if (!task->mm) { in oom_adj_write()
879 if (!lock_task_sighand(task, &flags)) { in oom_adj_write()
893 if (oom_adj < task->signal->oom_score_adj && in oom_adj_write()
904 current->comm, task_pid_nr(current), task_pid_nr(task), in oom_adj_write()
905 task_pid_nr(task)); in oom_adj_write()
907 task->signal->oom_score_adj = oom_adj; in oom_adj_write()
908 trace_oom_score_adj_update(task); in oom_adj_write()
910 unlock_task_sighand(task, &flags); in oom_adj_write()
912 task_unlock(task); in oom_adj_write()
913 put_task_struct(task); in oom_adj_write()
927 struct task_struct *task = get_proc_task(file_inode(file)); in oom_score_adj_read() local
933 if (!task) in oom_score_adj_read()
935 if (lock_task_sighand(task, &flags)) { in oom_score_adj_read()
936 oom_score_adj = task->signal->oom_score_adj; in oom_score_adj_read()
937 unlock_task_sighand(task, &flags); in oom_score_adj_read()
939 put_task_struct(task); in oom_score_adj_read()
947 struct task_struct *task; in oom_score_adj_write() local
970 task = get_proc_task(file_inode(file)); in oom_score_adj_write()
971 if (!task) { in oom_score_adj_write()
976 task_lock(task); in oom_score_adj_write()
977 if (!task->mm) { in oom_score_adj_write()
982 if (!lock_task_sighand(task, &flags)) { in oom_score_adj_write()
987 if ((short)oom_score_adj < task->signal->oom_score_adj_min && in oom_score_adj_write()
993 task->signal->oom_score_adj = (short)oom_score_adj; in oom_score_adj_write()
995 task->signal->oom_score_adj_min = (short)oom_score_adj; in oom_score_adj_write()
996 trace_oom_score_adj_update(task); in oom_score_adj_write()
999 unlock_task_sighand(task, &flags); in oom_score_adj_write()
1001 task_unlock(task); in oom_score_adj_write()
1002 put_task_struct(task); in oom_score_adj_write()
1019 struct task_struct *task = get_proc_task(inode); in proc_loginuid_read() local
1023 if (!task) in proc_loginuid_read()
1027 audit_get_loginuid(task))); in proc_loginuid_read()
1028 put_task_struct(task); in proc_loginuid_read()
1100 struct task_struct *task = get_proc_task(inode); in proc_sessionid_read() local
1104 if (!task) in proc_sessionid_read()
1107 audit_get_sessionid(task)); in proc_sessionid_read()
1108 put_task_struct(task); in proc_sessionid_read()
1122 struct task_struct *task = get_proc_task(file_inode(file)); in proc_fault_inject_read() local
1127 if (!task) in proc_fault_inject_read()
1129 make_it_fail = task->make_it_fail; in proc_fault_inject_read()
1130 put_task_struct(task); in proc_fault_inject_read()
1140 struct task_struct *task; in proc_fault_inject_write() local
1157 task = get_proc_task(file_inode(file)); in proc_fault_inject_write()
1158 if (!task) in proc_fault_inject_write()
1160 task->make_it_fail = make_it_fail; in proc_fault_inject_write()
1161 put_task_struct(task); in proc_fault_inject_write()
1359 struct task_struct *task; in proc_exe_link() local
1363 task = get_proc_task(d_inode(dentry)); in proc_exe_link()
1364 if (!task) in proc_exe_link()
1366 mm = get_task_mm(task); in proc_exe_link()
1367 put_task_struct(task); in proc_exe_link()
1454 struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *task) in proc_pid_make_inode() argument
1475 ei->pid = get_task_pid(task, PIDTYPE_PID); in proc_pid_make_inode()
1479 if (task_dumpable(task)) { in proc_pid_make_inode()
1481 cred = __task_cred(task); in proc_pid_make_inode()
1486 security_task_to_inode(task, inode); in proc_pid_make_inode()
1499 struct task_struct *task; in pid_getattr() local
1508 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_getattr()
1509 if (task) { in pid_getattr()
1510 if (!has_pid_permissions(pid, task, 2)) { in pid_getattr()
1519 task_dumpable(task)) { in pid_getattr()
1520 cred = __task_cred(task); in pid_getattr()
1549 struct task_struct *task; in pid_revalidate() local
1556 task = get_proc_task(inode); in pid_revalidate()
1558 if (task) { in pid_revalidate()
1560 task_dumpable(task)) { in pid_revalidate()
1562 cred = __task_cred(task); in pid_revalidate()
1571 security_task_to_inode(task, inode); in pid_revalidate()
1572 put_task_struct(task); in pid_revalidate()
1614 instantiate_t instantiate, struct task_struct *task, const void *ptr) in proc_fill_cache() argument
1627 if (instantiate(d_inode(dir), child, task, ptr) < 0) { in proc_fill_cache()
1662 struct task_struct *task; in map_files_d_revalidate() local
1676 task = get_proc_task(inode); in map_files_d_revalidate()
1677 if (!task) in map_files_d_revalidate()
1680 mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in map_files_d_revalidate()
1693 if (task_dumpable(task)) { in map_files_d_revalidate()
1695 cred = __task_cred(task); in map_files_d_revalidate()
1703 security_task_to_inode(task, inode); in map_files_d_revalidate()
1708 put_task_struct(task); in map_files_d_revalidate()
1723 struct task_struct *task; in proc_map_files_get_link() local
1728 task = get_proc_task(d_inode(dentry)); in proc_map_files_get_link()
1729 if (!task) in proc_map_files_get_link()
1732 mm = get_task_mm(task); in proc_map_files_get_link()
1733 put_task_struct(task); in proc_map_files_get_link()
1765 struct task_struct *task, const void *ptr) in proc_map_files_instantiate() argument
1771 inode = proc_pid_make_inode(dir->i_sb, task); in proc_map_files_instantiate()
1798 struct task_struct *task; in proc_map_files_lookup() local
1807 task = get_proc_task(dir); in proc_map_files_lookup()
1808 if (!task) in proc_map_files_lookup()
1812 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_lookup()
1819 mm = get_task_mm(task); in proc_map_files_lookup()
1829 result = proc_map_files_instantiate(dir, dentry, task, in proc_map_files_lookup()
1836 put_task_struct(task); in proc_map_files_lookup()
1851 struct task_struct *task; in proc_map_files_readdir() local
1864 task = get_proc_task(file_inode(file)); in proc_map_files_readdir()
1865 if (!task) in proc_map_files_readdir()
1869 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_readdir()
1876 mm = get_task_mm(task); in proc_map_files_readdir()
1932 task, in proc_map_files_readdir()
1942 put_task_struct(task); in proc_map_files_readdir()
1955 struct task_struct *task; member
1965 tp->task = get_pid_task(tp->pid, PIDTYPE_PID); in timers_start()
1966 if (!tp->task) in timers_start()
1969 tp->sighand = lock_task_sighand(tp->task, &tp->flags); in timers_start()
1973 return seq_list_start(&tp->task->signal->posix_timers, *pos); in timers_start()
1979 return seq_list_next(v, &tp->task->signal->posix_timers, pos); in timers_next()
1987 unlock_task_sighand(tp->task, &tp->flags); in timers_stop()
1991 if (tp->task) { in timers_stop()
1992 put_task_struct(tp->task); in timers_stop()
1993 tp->task = NULL; in timers_stop()
2054 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_pident_instantiate() argument
2060 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pident_instantiate()
2088 struct task_struct *task = get_proc_task(dir); in proc_pident_lookup() local
2093 if (!task) in proc_pident_lookup()
2110 error = proc_pident_instantiate(dir, dentry, task, p); in proc_pident_lookup()
2112 put_task_struct(task); in proc_pident_lookup()
2120 struct task_struct *task = get_proc_task(file_inode(file)); in proc_pident_readdir() local
2123 if (!task) in proc_pident_readdir()
2134 proc_pident_instantiate, task, p)) in proc_pident_readdir()
2139 put_task_struct(task); in proc_pident_readdir()
2150 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_read() local
2152 if (!task) in proc_pid_attr_read()
2155 length = security_getprocattr(task, in proc_pid_attr_read()
2158 put_task_struct(task); in proc_pid_attr_read()
2171 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_write() local
2174 if (!task) in proc_pid_attr_write()
2194 length = mutex_lock_interruptible(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2198 length = security_setprocattr(task, in proc_pid_attr_write()
2201 mutex_unlock(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2205 put_task_struct(task); in proc_pid_attr_write()
2256 struct task_struct *task = get_proc_task(file_inode(file)); in proc_coredump_filter_read() local
2262 if (!task) in proc_coredump_filter_read()
2266 mm = get_task_mm(task); in proc_coredump_filter_read()
2275 put_task_struct(task); in proc_coredump_filter_read()
2285 struct task_struct *task; in proc_coredump_filter_write() local
2308 task = get_proc_task(file_inode(file)); in proc_coredump_filter_write()
2309 if (!task) in proc_coredump_filter_write()
2313 mm = get_task_mm(task); in proc_coredump_filter_write()
2326 put_task_struct(task); in proc_coredump_filter_write()
2339 static int do_io_accounting(struct task_struct *task, struct seq_file *m, int whole) in do_io_accounting() argument
2341 struct task_io_accounting acct = task->ioac; in do_io_accounting()
2345 result = mutex_lock_killable(&task->signal->cred_guard_mutex); in do_io_accounting()
2349 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) { in do_io_accounting()
2354 if (whole && lock_task_sighand(task, &flags)) { in do_io_accounting()
2355 struct task_struct *t = task; in do_io_accounting()
2357 task_io_accounting_add(&acct, &task->signal->ioac); in do_io_accounting()
2358 while_each_thread(task, t) in do_io_accounting()
2361 unlock_task_sighand(task, &flags); in do_io_accounting()
2381 mutex_unlock(&task->signal->cred_guard_mutex); in do_io_accounting()
2386 struct pid *pid, struct task_struct *task) in proc_tid_io_accounting() argument
2388 return do_io_accounting(task, m, 0); in proc_tid_io_accounting()
2392 struct pid *pid, struct task_struct *task) in proc_tgid_io_accounting() argument
2394 return do_io_accounting(task, m, 1); in proc_tgid_io_accounting()
2403 struct task_struct *task; in proc_id_map_open() local
2407 task = get_proc_task(inode); in proc_id_map_open()
2408 if (task) { in proc_id_map_open()
2410 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_id_map_open()
2412 put_task_struct(task); in proc_id_map_open()
2481 struct task_struct *task; in proc_setgroups_open() local
2485 task = get_proc_task(inode); in proc_setgroups_open()
2486 if (task) { in proc_setgroups_open()
2488 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_setgroups_open()
2490 put_task_struct(task); in proc_setgroups_open()
2531 struct pid *pid, struct task_struct *task) in proc_pid_personality() argument
2533 int err = lock_trace(task); in proc_pid_personality()
2535 seq_printf(m, "%08x\n", task->personality); in proc_pid_personality()
2536 unlock_trace(task); in proc_pid_personality()
2738 void proc_flush_task(struct task_struct *task) in proc_flush_task() argument
2744 pid = task_pid(task); in proc_flush_task()
2745 tgid = task_tgid(task); in proc_flush_task()
2756 struct task_struct *task, const void *ptr) in proc_pid_instantiate() argument
2760 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pid_instantiate()
2785 struct task_struct *task; in proc_pid_lookup() local
2795 task = find_task_by_pid_ns(tgid, ns); in proc_pid_lookup()
2796 if (task) in proc_pid_lookup()
2797 get_task_struct(task); in proc_pid_lookup()
2799 if (!task) in proc_pid_lookup()
2802 result = proc_pid_instantiate(dir, dentry, task, NULL); in proc_pid_lookup()
2803 put_task_struct(task); in proc_pid_lookup()
2814 struct task_struct *task; member
2820 if (iter.task) in next_tgid()
2821 put_task_struct(iter.task); in next_tgid()
2824 iter.task = NULL; in next_tgid()
2828 iter.task = pid_task(pid, PIDTYPE_PID); in next_tgid()
2841 if (!iter.task || !has_group_leader_pid(iter.task)) { in next_tgid()
2845 get_task_struct(iter.task); in next_tgid()
2876 iter.task = NULL; in proc_pid_readdir()
2878 iter.task; in proc_pid_readdir()
2882 if (!has_pid_permissions(ns, iter.task, 2)) in proc_pid_readdir()
2888 proc_pid_instantiate, iter.task, NULL)) { in proc_pid_readdir()
2889 put_task_struct(iter.task); in proc_pid_readdir()
3010 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_task_instantiate() argument
3013 inode = proc_pid_make_inode(dir->i_sb, task); in proc_task_instantiate()
3038 struct task_struct *task; in proc_task_lookup() local
3052 task = find_task_by_pid_ns(tid, ns); in proc_task_lookup()
3053 if (task) in proc_task_lookup()
3054 get_task_struct(task); in proc_task_lookup()
3056 if (!task) in proc_task_lookup()
3058 if (!same_thread_group(leader, task)) in proc_task_lookup()
3061 result = proc_task_instantiate(dir, dentry, task, NULL); in proc_task_lookup()
3063 put_task_struct(task); in proc_task_lookup()
3085 struct task_struct *pos, *task; in first_tid() local
3092 task = pid_task(pid, PIDTYPE_PID); in first_tid()
3093 if (!task) in first_tid()
3099 if (pos && same_thread_group(pos, task)) in first_tid()
3104 if (nr >= get_nr_threads(task)) in first_tid()
3110 pos = task = task->group_leader; in first_tid()
3114 } while_each_thread(task, pos); in first_tid()
3151 struct task_struct *task; in proc_task_readdir() local
3167 for (task = first_tid(proc_pid(inode), tid, ctx->pos - 2, ns); in proc_task_readdir()
3168 task; in proc_task_readdir()
3169 task = next_tid(task), ctx->pos++) { in proc_task_readdir()
3172 tid = task_pid_nr_ns(task, ns); in proc_task_readdir()
3175 proc_task_instantiate, task, NULL)) { in proc_task_readdir()
3179 put_task_struct(task); in proc_task_readdir()