Lines Matching full:task

114  *	in /proc for a task before it execs a suid executable.
208 static int get_task_root(struct task_struct *task, struct path *root) in get_task_root() argument
212 task_lock(task); in get_task_root()
213 if (task->fs) { in get_task_root()
214 get_fs_root(task->fs, root); in get_task_root()
217 task_unlock(task); in get_task_root()
223 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_cwd_link() local
226 if (task) { in proc_cwd_link()
227 task_lock(task); in proc_cwd_link()
228 if (task->fs) { in proc_cwd_link()
229 get_fs_pwd(task->fs, path); in proc_cwd_link()
232 task_unlock(task); in proc_cwd_link()
233 put_task_struct(task); in proc_cwd_link()
240 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_root_link() local
243 if (task) { in proc_root_link()
244 result = get_task_root(task, path); in proc_root_link()
245 put_task_struct(task); in proc_root_link()
422 struct pid *pid, struct task_struct *task) in proc_pid_wchan() argument
427 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_pid_wchan()
430 wchan = get_wchan(task); in proc_pid_wchan()
442 static int lock_trace(struct task_struct *task) in lock_trace() argument
444 int err = down_read_killable(&task->signal->exec_update_lock); in lock_trace()
447 if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) { in lock_trace()
448 up_read(&task->signal->exec_update_lock); in lock_trace()
454 static void unlock_trace(struct task_struct *task) in unlock_trace() argument
456 up_read(&task->signal->exec_update_lock); in unlock_trace()
464 struct pid *pid, struct task_struct *task) in proc_pid_stack() argument
470 * The ability to racily run the kernel stack unwinder on a running task in proc_pid_stack()
475 * some work to ensure that the remote task can not be scheduled; and in proc_pid_stack()
488 err = lock_trace(task); in proc_pid_stack()
492 nr_entries = stack_trace_save_tsk(task, entries, in proc_pid_stack()
499 unlock_trace(task); in proc_pid_stack()
512 struct pid *pid, struct task_struct *task) in proc_pid_schedstat() argument
518 (unsigned long long)task->se.sum_exec_runtime, in proc_pid_schedstat()
519 (unsigned long long)task->sched_info.run_delay, in proc_pid_schedstat()
520 task->sched_info.pcount); in proc_pid_schedstat()
531 struct task_struct *task = get_proc_task(inode); in lstats_show_proc() local
533 if (!task) in lstats_show_proc()
537 struct latency_record *lr = &task->latency_record[i]; in lstats_show_proc()
553 put_task_struct(task); in lstats_show_proc()
565 struct task_struct *task = get_proc_task(file_inode(file)); in lstats_write() local
567 if (!task) in lstats_write()
569 clear_tsk_latency_tracing(task); in lstats_write()
570 put_task_struct(task); in lstats_write()
586 struct pid *pid, struct task_struct *task) in proc_oom_score() argument
592 badness = oom_badness(task, totalpages); in proc_oom_score()
632 struct pid *pid, struct task_struct *task) in proc_pid_limits() argument
639 if (!lock_task_sighand(task, &flags)) in proc_pid_limits()
641 memcpy(rlim, task->signal->rlim, sizeof(struct rlimit) * RLIM_NLIMITS); in proc_pid_limits()
642 unlock_task_sighand(task, &flags); in proc_pid_limits()
676 struct pid *pid, struct task_struct *task) in proc_pid_syscall() argument
682 res = lock_trace(task); in proc_pid_syscall()
686 if (task_current_syscall(task, &info)) in proc_pid_syscall()
697 unlock_trace(task); in proc_pid_syscall()
710 struct task_struct *task; in proc_fd_access_allowed() local
712 /* Allow access to a task's file descriptors if it is us or we in proc_fd_access_allowed()
716 task = get_proc_task(inode); in proc_fd_access_allowed()
717 if (task) { in proc_fd_access_allowed()
718 allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in proc_fd_access_allowed()
719 put_task_struct(task); in proc_fd_access_allowed()
742 * May current process learn task's sched/cmdline info (for hide_pid_min=1)
746 struct task_struct *task, in has_pid_permissions() argument
755 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
761 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
769 struct task_struct *task; in proc_pid_permission() local
772 task = get_proc_task(inode); in proc_pid_permission()
773 if (!task) in proc_pid_permission()
775 has_perms = has_pid_permissions(fs_info, task, HIDEPID_NO_ACCESS); in proc_pid_permission()
776 put_task_struct(task); in proc_pid_permission()
805 struct task_struct *task; in proc_single_show() local
808 task = get_pid_task(pid, PIDTYPE_PID); in proc_single_show()
809 if (!task) in proc_single_show()
812 ret = PROC_I(inode)->op.proc_show(m, ns, pid, task); in proc_single_show()
814 put_task_struct(task); in proc_single_show()
833 * - Returns NULL if the task has no mm (PF_KTHREAD or PF_EXITING)
839 struct task_struct *task = get_proc_task(inode); in proc_mem_open() local
842 if (!task) in proc_mem_open()
845 mm = mm_access(task, mode | PTRACE_MODE_FSCREDS); in proc_mem_open()
846 put_task_struct(task); in proc_mem_open()
879 struct task_struct *task; in proc_mem_foll_force() local
886 task = get_proc_task(file_inode(file)); in proc_mem_foll_force()
887 if (task) { in proc_mem_foll_force()
888 ptrace_active = READ_ONCE(task->ptrace) && in proc_mem_foll_force()
889 READ_ONCE(task->mm) == mm && in proc_mem_foll_force()
890 READ_ONCE(task->parent) == current; in proc_mem_foll_force()
891 put_task_struct(task); in proc_mem_foll_force()
1106 struct task_struct *task = get_proc_task(file_inode(file)); in oom_adj_read() local
1111 if (!task) in oom_adj_read()
1113 if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MAX) in oom_adj_read()
1116 oom_adj = (task->signal->oom_score_adj * -OOM_DISABLE) / in oom_adj_read()
1118 put_task_struct(task); in oom_adj_read()
1128 struct task_struct *task; in __set_oom_adj() local
1131 task = get_proc_task(file_inode(file)); in __set_oom_adj()
1132 if (!task) in __set_oom_adj()
1137 if (oom_adj < task->signal->oom_score_adj && in __set_oom_adj()
1147 current->comm, task_pid_nr(current), task_pid_nr(task), in __set_oom_adj()
1148 task_pid_nr(task)); in __set_oom_adj()
1150 if ((short)oom_adj < task->signal->oom_score_adj_min && in __set_oom_adj()
1162 if (!task->vfork_done) { in __set_oom_adj()
1163 struct task_struct *p = find_lock_task_mm(task); in __set_oom_adj()
1174 task->signal->oom_score_adj = oom_adj; in __set_oom_adj()
1176 task->signal->oom_score_adj_min = (short)oom_adj; in __set_oom_adj()
1177 trace_oom_score_adj_update(task); in __set_oom_adj()
1184 if (same_thread_group(task, p)) in __set_oom_adj()
1204 put_task_struct(task); in __set_oom_adj()
1264 struct task_struct *task = get_proc_task(file_inode(file)); in oom_score_adj_read() local
1269 if (!task) in oom_score_adj_read()
1271 oom_score_adj = task->signal->oom_score_adj; in oom_score_adj_read()
1272 put_task_struct(task); in oom_score_adj_read()
1317 struct task_struct *task = get_proc_task(inode); in proc_loginuid_read() local
1321 if (!task) in proc_loginuid_read()
1325 audit_get_loginuid(task))); in proc_loginuid_read()
1326 put_task_struct(task); in proc_loginuid_read()
1383 struct task_struct *task = get_proc_task(inode); in proc_sessionid_read() local
1387 if (!task) in proc_sessionid_read()
1390 audit_get_sessionid(task)); in proc_sessionid_read()
1391 put_task_struct(task); in proc_sessionid_read()
1405 struct task_struct *task = get_proc_task(file_inode(file)); in proc_fault_inject_read() local
1410 if (!task) in proc_fault_inject_read()
1412 make_it_fail = task->make_it_fail; in proc_fault_inject_read()
1413 put_task_struct(task); in proc_fault_inject_read()
1423 struct task_struct *task; in proc_fault_inject_write() local
1441 task = get_proc_task(file_inode(file)); in proc_fault_inject_write()
1442 if (!task) in proc_fault_inject_write()
1444 task->make_it_fail = make_it_fail; in proc_fault_inject_write()
1445 put_task_struct(task); in proc_fault_inject_write()
1459 struct task_struct *task; in proc_fail_nth_write() local
1467 task = get_proc_task(file_inode(file)); in proc_fail_nth_write()
1468 if (!task) in proc_fail_nth_write()
1470 task->fail_nth = n; in proc_fail_nth_write()
1471 put_task_struct(task); in proc_fail_nth_write()
1479 struct task_struct *task; in proc_fail_nth_read() local
1483 task = get_proc_task(file_inode(file)); in proc_fail_nth_read()
1484 if (!task) in proc_fail_nth_read()
1486 len = snprintf(numbuf, sizeof(numbuf), "%u\n", task->fail_nth); in proc_fail_nth_read()
1487 put_task_struct(task); in proc_fail_nth_read()
1499 * Print out various scheduling related per-task fields:
1782 struct task_struct *task; in proc_exe_link() local
1785 task = get_proc_task(d_inode(dentry)); in proc_exe_link()
1786 if (!task) in proc_exe_link()
1788 exe_file = get_task_exe_file(task); in proc_exe_link()
1789 put_task_struct(task); in proc_exe_link()
1875 void task_dump_owner(struct task_struct *task, umode_t mode, in task_dump_owner() argument
1879 * proc file for a task. in task_dump_owner()
1885 if (unlikely(task->flags & PF_KTHREAD)) { in task_dump_owner()
1893 cred = __task_cred(task); in task_dump_owner()
1908 task_lock(task); in task_dump_owner()
1909 mm = task->mm; in task_dump_owner()
1927 task_unlock(task); in task_dump_owner()
1945 struct task_struct *task, umode_t mode) in proc_pid_make_inode() argument
1965 * grab the reference to task. in proc_pid_make_inode()
1967 pid = get_task_pid(task, PIDTYPE_PID); in proc_pid_make_inode()
1974 task_dump_owner(task, 0, &inode->i_uid, &inode->i_gid); in proc_pid_make_inode()
1975 security_task_to_inode(task, inode); in proc_pid_make_inode()
1986 * Generating an inode and adding it into @pid->inodes, so that task will
1990 * '/proc/<tgid>/task'. Other entries(eg. fd, stat) under '/proc/<tgid>'
1992 * In theory, dentries under '/proc/<tgid>/task' can also be released by
1995 * '/proc/<tgid>/task/<pid>' dentry before released.
1998 struct task_struct *task, umode_t mode) in proc_pid_make_base_inode() argument
2004 inode = proc_pid_make_inode(sb, task, mode); in proc_pid_make_base_inode()
2023 struct task_struct *task; in pid_getattr() local
2030 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_getattr()
2031 if (task) { in pid_getattr()
2032 if (!has_pid_permissions(fs_info, task, HIDEPID_INVISIBLE)) { in pid_getattr()
2040 task_dump_owner(task, inode->i_mode, &stat->uid, &stat->gid); in pid_getattr()
2051 void pid_update_inode(struct task_struct *task, struct inode *inode) in pid_update_inode() argument
2053 task_dump_owner(task, inode->i_mode, &inode->i_uid, &inode->i_gid); in pid_update_inode()
2056 security_task_to_inode(task, inode); in pid_update_inode()
2060 * Rewrite the inode's ownerships here because the owning task may have
2068 struct task_struct *task; in pid_revalidate() local
2075 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_revalidate()
2077 if (task) { in pid_revalidate()
2078 pid_update_inode(task, inode); in pid_revalidate()
2093 /* Is the task we represent dead? in pid_delete_dentry()
2122 instantiate_t instantiate, struct task_struct *task, const void *ptr) in proc_fill_cache() argument
2141 res = instantiate(child, task, ptr); in proc_fill_cache()
2207 struct task_struct *task; in map_files_d_revalidate() local
2215 task = get_proc_task(inode); in map_files_d_revalidate()
2216 if (!task) in map_files_d_revalidate()
2219 mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in map_files_d_revalidate()
2235 task_dump_owner(task, 0, &inode->i_uid, &inode->i_gid); in map_files_d_revalidate()
2237 security_task_to_inode(task, inode); in map_files_d_revalidate()
2242 put_task_struct(task); in map_files_d_revalidate()
2257 struct task_struct *task; in map_files_get_link() local
2262 task = get_proc_task(d_inode(dentry)); in map_files_get_link()
2263 if (!task) in map_files_get_link()
2266 mm = get_task_mm(task); in map_files_get_link()
2267 put_task_struct(task); in map_files_get_link()
2327 struct task_struct *task, const void *ptr) in proc_map_files_instantiate() argument
2333 inode = proc_pid_make_inode(dentry->d_sb, task, S_IFLNK | in proc_map_files_instantiate()
2354 struct task_struct *task; in proc_map_files_lookup() local
2359 task = get_proc_task(dir); in proc_map_files_lookup()
2360 if (!task) in proc_map_files_lookup()
2364 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_lookup()
2371 mm = get_task_mm(task); in proc_map_files_lookup()
2385 result = proc_map_files_instantiate(dentry, task, in proc_map_files_lookup()
2393 put_task_struct(task); in proc_map_files_lookup()
2408 struct task_struct *task; in proc_map_files_readdir() local
2419 task = get_proc_task(file_inode(file)); in proc_map_files_readdir()
2420 if (!task) in proc_map_files_readdir()
2424 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_readdir()
2431 mm = get_task_mm(task); in proc_map_files_readdir()
2485 task, in proc_map_files_readdir()
2492 put_task_struct(task); in proc_map_files_readdir()
2507 struct task_struct *task; member
2515 tp->task = get_pid_task(tp->pid, PIDTYPE_PID); in timers_start()
2516 if (!tp->task) in timers_start()
2520 return seq_hlist_start_rcu(&tp->task->signal->posix_timers, *pos); in timers_start()
2527 return seq_hlist_next_rcu(v, &tp->task->signal->posix_timers, pos); in timers_next()
2534 if (tp->task) { in timers_stop()
2535 put_task_struct(tp->task); in timers_stop()
2536 tp->task = NULL; in timers_stop()
2691 struct task_struct *task, const void *ptr) in proc_pident_instantiate() argument
2697 inode = proc_pid_make_inode(dentry->d_sb, task, p->mode); in proc_pident_instantiate()
2709 pid_update_inode(task, inode); in proc_pident_instantiate()
2718 struct task_struct *task = get_proc_task(dir); in proc_pident_lookup() local
2721 if (!task) in proc_pident_lookup()
2732 res = proc_pident_instantiate(dentry, task, p); in proc_pident_lookup()
2736 put_task_struct(task); in proc_pident_lookup()
2744 struct task_struct *task = get_proc_task(file_inode(file)); in proc_pident_readdir() local
2747 if (!task) in proc_pident_readdir()
2758 proc_pident_instantiate, task, p)) in proc_pident_readdir()
2763 put_task_struct(task); in proc_pident_readdir()
2781 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_read() local
2783 if (!task) in proc_pid_attr_read()
2786 length = security_getprocattr(task, PROC_I(inode)->op.lsmid, in proc_pid_attr_read()
2789 put_task_struct(task); in proc_pid_attr_read()
2800 struct task_struct *task; in proc_pid_attr_write() local
2804 /* A task may only write when it was the opener. */ in proc_pid_attr_write()
2809 task = pid_task(proc_pid(inode), PIDTYPE_PID); in proc_pid_attr_write()
2810 if (!task) { in proc_pid_attr_write()
2814 /* A task may only write its own attributes. */ in proc_pid_attr_write()
2815 if (current != task) { in proc_pid_attr_write()
2956 struct task_struct *task = get_proc_task(file_inode(file)); in proc_coredump_filter_read() local
2962 if (!task) in proc_coredump_filter_read()
2966 mm = get_task_mm(task); in proc_coredump_filter_read()
2977 put_task_struct(task); in proc_coredump_filter_read()
2987 struct task_struct *task; in proc_coredump_filter_write() local
2999 task = get_proc_task(file_inode(file)); in proc_coredump_filter_write()
3000 if (!task) in proc_coredump_filter_write()
3003 mm = get_task_mm(task); in proc_coredump_filter_write()
3017 put_task_struct(task); in proc_coredump_filter_write()
3032 static int do_io_accounting(struct task_struct *task, struct seq_file *m, int whole) in do_io_accounting() argument
3037 result = down_read_killable(&task->signal->exec_update_lock); in do_io_accounting()
3041 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) { in do_io_accounting()
3047 struct signal_struct *sig = task->signal; in do_io_accounting()
3058 acct = task->ioac; in do_io_accounting()
3079 up_read(&task->signal->exec_update_lock); in do_io_accounting()
3084 struct pid *pid, struct task_struct *task) in proc_tid_io_accounting() argument
3086 return do_io_accounting(task, m, 0); in proc_tid_io_accounting()
3090 struct pid *pid, struct task_struct *task) in proc_tgid_io_accounting() argument
3092 return do_io_accounting(task, m, 1); in proc_tgid_io_accounting()
3101 struct task_struct *task; in proc_id_map_open() local
3105 task = get_proc_task(inode); in proc_id_map_open()
3106 if (task) { in proc_id_map_open()
3108 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_id_map_open()
3110 put_task_struct(task); in proc_id_map_open()
3179 struct task_struct *task; in proc_setgroups_open() local
3183 task = get_proc_task(inode); in proc_setgroups_open()
3184 if (task) { in proc_setgroups_open()
3186 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_setgroups_open()
3188 put_task_struct(task); in proc_setgroups_open()
3229 struct pid *pid, struct task_struct *task) in proc_pid_personality() argument
3231 int err = lock_trace(task); in proc_pid_personality()
3233 seq_printf(m, "%08x\n", task->personality); in proc_pid_personality()
3234 unlock_trace(task); in proc_pid_personality()
3241 struct pid *pid, struct task_struct *task) in proc_pid_patch_state() argument
3243 seq_printf(m, "%d\n", task->patch_state); in proc_pid_patch_state()
3250 struct pid *pid, struct task_struct *task) in proc_pid_ksm_merging_pages() argument
3254 mm = get_task_mm(task); in proc_pid_ksm_merging_pages()
3263 struct pid *pid, struct task_struct *task) in proc_pid_ksm_stat() argument
3268 mm = get_task_mm(task); in proc_pid_ksm_stat()
3293 struct pid *pid, struct task_struct *task) in proc_stack_depth() argument
3296 (task->prev_lowest_stack & (THREAD_SIZE - 1)); in proc_stack_depth()
3298 (task->lowest_stack & (THREAD_SIZE - 1)); in proc_stack_depth()
3313 DIR("task", S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations),
3468 * It is safe and reasonable to cache /proc entries for a task until
3469 * that task exits. After that they just clog up the dcache with
3485 struct task_struct *task, const void *ptr) in proc_pid_instantiate() argument
3489 inode = proc_pid_make_base_inode(dentry->d_sb, task, in proc_pid_instantiate()
3499 pid_update_inode(task, inode); in proc_pid_instantiate()
3506 struct task_struct *task; in proc_pid_lookup() local
3519 task = find_task_by_pid_ns(tgid, ns); in proc_pid_lookup()
3520 if (task) in proc_pid_lookup()
3521 get_task_struct(task); in proc_pid_lookup()
3523 if (!task) in proc_pid_lookup()
3528 if (!has_pid_permissions(fs_info, task, HIDEPID_NO_ACCESS)) in proc_pid_lookup()
3532 result = proc_pid_instantiate(dentry, task, NULL); in proc_pid_lookup()
3534 put_task_struct(task); in proc_pid_lookup()
3540 * Find the first task with tgid >= tgid
3545 struct task_struct *task; member
3551 if (iter.task) in next_tgid()
3552 put_task_struct(iter.task); in next_tgid()
3555 iter.task = NULL; in next_tgid()
3559 iter.task = pid_task(pid, PIDTYPE_TGID); in next_tgid()
3560 if (!iter.task) { in next_tgid()
3564 get_task_struct(iter.task); in next_tgid()
3594 iter.task = NULL; in proc_pid_readdir()
3596 iter.task; in proc_pid_readdir()
3602 if (!has_pid_permissions(fs_info, iter.task, HIDEPID_INVISIBLE)) in proc_pid_readdir()
3608 proc_pid_instantiate, iter.task, NULL)) { in proc_pid_readdir()
3609 put_task_struct(iter.task); in proc_pid_readdir()
3619 * used for the node /proc/<pid>/task/<tid>/comm.
3620 * It bypasses generic permission checks in the case where a task of the same
3621 * task group attempts to access the node.
3633 struct task_struct *task; in proc_tid_comm_permission() local
3635 task = get_proc_task(inode); in proc_tid_comm_permission()
3636 if (!task) in proc_tid_comm_permission()
3638 is_same_tgroup = same_thread_group(current, task); in proc_tid_comm_permission()
3639 put_task_struct(task); in proc_tid_comm_permission()
3642 /* This file (/proc/<pid>/task/<tid>/comm) can always be in proc_tid_comm_permission()
3786 struct task_struct *task, const void *ptr) in proc_task_instantiate() argument
3789 inode = proc_pid_make_base_inode(dentry->d_sb, task, in proc_task_instantiate()
3799 pid_update_inode(task, inode); in proc_task_instantiate()
3806 struct task_struct *task; in proc_task_lookup() local
3823 task = find_task_by_pid_ns(tid, ns); in proc_task_lookup()
3824 if (task) in proc_task_lookup()
3825 get_task_struct(task); in proc_task_lookup()
3827 if (!task) in proc_task_lookup()
3829 if (!same_thread_group(leader, task)) in proc_task_lookup()
3832 result = proc_task_instantiate(dentry, task, NULL); in proc_task_lookup()
3834 put_task_struct(task); in proc_task_lookup()
3856 struct task_struct *pos, *task; in first_tid() local
3863 task = pid_task(pid, PIDTYPE_PID); in first_tid()
3864 if (!task) in first_tid()
3870 if (pos && same_thread_group(pos, task)) in first_tid()
3875 if (nr >= get_nr_threads(task)) in first_tid()
3881 for_each_thread(task, pos) { in first_tid()
3915 /* for the /proc/TGID/task/ directories */
3919 struct task_struct *task; in proc_task_readdir() local
3935 for (task = first_tid(proc_pid(inode), tid, ctx->pos - 2, ns); in proc_task_readdir()
3936 task; in proc_task_readdir()
3937 task = next_tid(task), ctx->pos++) { in proc_task_readdir()
3941 tid = task_pid_nr_ns(task, ns); in proc_task_readdir()
3943 continue; /* The task has just exited. */ in proc_task_readdir()
3946 proc_task_instantiate, task, NULL)) { in proc_task_readdir()
3950 put_task_struct(task); in proc_task_readdir()