Lines Matching full:task
116 * in /proc for a task before it execs a suid executable.
176 static int get_task_root(struct task_struct *task, struct path *root) in get_task_root() argument
180 task_lock(task); in get_task_root()
181 if (task->fs) { in get_task_root()
182 get_fs_root(task->fs, root); in get_task_root()
185 task_unlock(task); in get_task_root()
191 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_cwd_link() local
194 if (task) { in proc_cwd_link()
195 task_lock(task); in proc_cwd_link()
196 if (task->fs) { in proc_cwd_link()
197 get_fs_pwd(task->fs, path); in proc_cwd_link()
200 task_unlock(task); in proc_cwd_link()
201 put_task_struct(task); in proc_cwd_link()
208 struct task_struct *task = get_proc_task(d_inode(dentry)); in proc_root_link() local
211 if (task) { in proc_root_link()
212 result = get_task_root(task, path); in proc_root_link()
213 put_task_struct(task); in proc_root_link()
390 struct pid *pid, struct task_struct *task) in proc_pid_wchan() argument
395 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_pid_wchan()
398 wchan = get_wchan(task); in proc_pid_wchan()
410 static int lock_trace(struct task_struct *task) in lock_trace() argument
412 int err = down_read_killable(&task->signal->exec_update_lock); in lock_trace()
415 if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) { in lock_trace()
416 up_read(&task->signal->exec_update_lock); in lock_trace()
422 static void unlock_trace(struct task_struct *task) in unlock_trace() argument
424 up_read(&task->signal->exec_update_lock); in unlock_trace()
432 struct pid *pid, struct task_struct *task) in proc_pid_stack() argument
438 * The ability to racily run the kernel stack unwinder on a running task in proc_pid_stack()
443 * some work to ensure that the remote task can not be scheduled; and in proc_pid_stack()
456 err = lock_trace(task); in proc_pid_stack()
460 nr_entries = stack_trace_save_tsk(task, entries, in proc_pid_stack()
467 unlock_trace(task); in proc_pid_stack()
480 struct pid *pid, struct task_struct *task) in proc_pid_schedstat() argument
486 (unsigned long long)task->se.sum_exec_runtime, in proc_pid_schedstat()
487 (unsigned long long)task->sched_info.run_delay, in proc_pid_schedstat()
488 task->sched_info.pcount); in proc_pid_schedstat()
499 struct task_struct *task = get_proc_task(inode); in lstats_show_proc() local
501 if (!task) in lstats_show_proc()
505 struct latency_record *lr = &task->latency_record[i]; in lstats_show_proc()
521 put_task_struct(task); in lstats_show_proc()
533 struct task_struct *task = get_proc_task(file_inode(file)); in lstats_write() local
535 if (!task) in lstats_write()
537 clear_tsk_latency_tracing(task); in lstats_write()
538 put_task_struct(task); in lstats_write()
554 struct pid *pid, struct task_struct *task) in proc_oom_score() argument
560 badness = oom_badness(task, totalpages); in proc_oom_score()
600 struct pid *pid, struct task_struct *task) in proc_pid_limits() argument
607 if (!lock_task_sighand(task, &flags)) in proc_pid_limits()
609 memcpy(rlim, task->signal->rlim, sizeof(struct rlimit) * RLIM_NLIMITS); in proc_pid_limits()
610 unlock_task_sighand(task, &flags); in proc_pid_limits()
644 struct pid *pid, struct task_struct *task) in proc_pid_syscall() argument
650 res = lock_trace(task); in proc_pid_syscall()
654 if (task_current_syscall(task, &info)) in proc_pid_syscall()
665 unlock_trace(task); in proc_pid_syscall()
678 struct task_struct *task; in proc_fd_access_allowed() local
680 /* Allow access to a task's file descriptors if it is us or we in proc_fd_access_allowed()
684 task = get_proc_task(inode); in proc_fd_access_allowed()
685 if (task) { in proc_fd_access_allowed()
686 allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in proc_fd_access_allowed()
687 put_task_struct(task); in proc_fd_access_allowed()
710 * May current process learn task's sched/cmdline info (for hide_pid_min=1)
714 struct task_struct *task, in has_pid_permissions() argument
723 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
729 return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS); in has_pid_permissions()
736 struct task_struct *task; in proc_pid_permission() local
739 task = get_proc_task(inode); in proc_pid_permission()
740 if (!task) in proc_pid_permission()
742 has_perms = has_pid_permissions(fs_info, task, HIDEPID_NO_ACCESS); in proc_pid_permission()
743 put_task_struct(task); in proc_pid_permission()
772 struct task_struct *task; in proc_single_show() local
775 task = get_pid_task(pid, PIDTYPE_PID); in proc_single_show()
776 if (!task) in proc_single_show()
779 ret = PROC_I(inode)->op.proc_show(m, ns, pid, task); in proc_single_show()
781 put_task_struct(task); in proc_single_show()
800 struct task_struct *task = get_proc_task(inode); in proc_mem_open() local
803 if (task) { in proc_mem_open()
804 mm = mm_access(task, mode | PTRACE_MODE_FSCREDS); in proc_mem_open()
805 put_task_struct(task); in proc_mem_open()
1059 struct task_struct *task = get_proc_task(file_inode(file)); in oom_adj_read() local
1064 if (!task) in oom_adj_read()
1066 if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MAX) in oom_adj_read()
1069 oom_adj = (task->signal->oom_score_adj * -OOM_DISABLE) / in oom_adj_read()
1071 put_task_struct(task); in oom_adj_read()
1081 struct task_struct *task; in __set_oom_adj() local
1084 task = get_proc_task(file_inode(file)); in __set_oom_adj()
1085 if (!task) in __set_oom_adj()
1090 if (oom_adj < task->signal->oom_score_adj && in __set_oom_adj()
1100 current->comm, task_pid_nr(current), task_pid_nr(task), in __set_oom_adj()
1101 task_pid_nr(task)); in __set_oom_adj()
1103 if ((short)oom_adj < task->signal->oom_score_adj_min && in __set_oom_adj()
1115 if (!task->vfork_done) { in __set_oom_adj()
1116 struct task_struct *p = find_lock_task_mm(task); in __set_oom_adj()
1127 task->signal->oom_score_adj = oom_adj; in __set_oom_adj()
1129 task->signal->oom_score_adj_min = (short)oom_adj; in __set_oom_adj()
1130 trace_oom_score_adj_update(task); in __set_oom_adj()
1137 if (same_thread_group(task, p)) in __set_oom_adj()
1157 put_task_struct(task); in __set_oom_adj()
1218 struct task_struct *task = get_proc_task(file_inode(file)); in oom_score_adj_read() local
1223 if (!task) in oom_score_adj_read()
1225 oom_score_adj = task->signal->oom_score_adj; in oom_score_adj_read()
1226 put_task_struct(task); in oom_score_adj_read()
1272 struct task_struct *task = get_proc_task(inode); in proc_loginuid_read() local
1276 if (!task) in proc_loginuid_read()
1280 audit_get_loginuid(task))); in proc_loginuid_read()
1281 put_task_struct(task); in proc_loginuid_read()
1338 struct task_struct *task = get_proc_task(inode); in proc_sessionid_read() local
1342 if (!task) in proc_sessionid_read()
1345 audit_get_sessionid(task)); in proc_sessionid_read()
1346 put_task_struct(task); in proc_sessionid_read()
1360 struct task_struct *task = get_proc_task(file_inode(file)); in proc_fault_inject_read() local
1365 if (!task) in proc_fault_inject_read()
1367 make_it_fail = task->make_it_fail; in proc_fault_inject_read()
1368 put_task_struct(task); in proc_fault_inject_read()
1378 struct task_struct *task; in proc_fault_inject_write() local
1396 task = get_proc_task(file_inode(file)); in proc_fault_inject_write()
1397 if (!task) in proc_fault_inject_write()
1399 task->make_it_fail = make_it_fail; in proc_fault_inject_write()
1400 put_task_struct(task); in proc_fault_inject_write()
1414 struct task_struct *task; in proc_fail_nth_write() local
1422 task = get_proc_task(file_inode(file)); in proc_fail_nth_write()
1423 if (!task) in proc_fail_nth_write()
1425 task->fail_nth = n; in proc_fail_nth_write()
1426 put_task_struct(task); in proc_fail_nth_write()
1434 struct task_struct *task; in proc_fail_nth_read() local
1438 task = get_proc_task(file_inode(file)); in proc_fail_nth_read()
1439 if (!task) in proc_fail_nth_read()
1441 len = snprintf(numbuf, sizeof(numbuf), "%u\n", task->fail_nth); in proc_fail_nth_read()
1442 put_task_struct(task); in proc_fail_nth_read()
1455 * Print out various scheduling related per-task fields:
1878 struct task_struct *task; in proc_exe_link() local
1881 task = get_proc_task(d_inode(dentry)); in proc_exe_link()
1882 if (!task) in proc_exe_link()
1884 exe_file = get_task_exe_file(task); in proc_exe_link()
1885 put_task_struct(task); in proc_exe_link()
1971 void task_dump_owner(struct task_struct *task, umode_t mode, in task_dump_owner() argument
1975 * proc file for a task. in task_dump_owner()
1981 if (unlikely(task->flags & PF_KTHREAD)) { in task_dump_owner()
1989 cred = __task_cred(task); in task_dump_owner()
2004 task_lock(task); in task_dump_owner()
2005 mm = task->mm; in task_dump_owner()
2023 task_unlock(task); in task_dump_owner()
2043 struct task_struct *task, umode_t mode) in proc_pid_make_inode() argument
2063 * grab the reference to task. in proc_pid_make_inode()
2065 pid = get_task_pid(task, PIDTYPE_PID); in proc_pid_make_inode()
2077 task_dump_owner(task, 0, &inode->i_uid, &inode->i_gid); in proc_pid_make_inode()
2078 security_task_to_inode(task, inode); in proc_pid_make_inode()
2093 struct task_struct *task; in pid_getattr() local
2100 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_getattr()
2101 if (task) { in pid_getattr()
2102 if (!has_pid_permissions(fs_info, task, HIDEPID_INVISIBLE)) { in pid_getattr()
2110 task_dump_owner(task, inode->i_mode, &stat->uid, &stat->gid); in pid_getattr()
2121 void pid_update_inode(struct task_struct *task, struct inode *inode) in pid_update_inode() argument
2123 task_dump_owner(task, inode->i_mode, &inode->i_uid, &inode->i_gid); in pid_update_inode()
2126 security_task_to_inode(task, inode); in pid_update_inode()
2130 * Rewrite the inode's ownerships here because the owning task may have
2137 struct task_struct *task; in pid_revalidate() local
2143 task = get_proc_task(inode); in pid_revalidate()
2145 if (task) { in pid_revalidate()
2146 pid_update_inode(task, inode); in pid_revalidate()
2147 put_task_struct(task); in pid_revalidate()
2160 /* Is the task we represent dead? in pid_delete_dentry()
2189 instantiate_t instantiate, struct task_struct *task, const void *ptr) in proc_fill_cache() argument
2205 res = instantiate(child, task, ptr); in proc_fill_cache()
2270 struct task_struct *task; in map_files_d_revalidate() local
2278 task = get_proc_task(inode); in map_files_d_revalidate()
2279 if (!task) in map_files_d_revalidate()
2282 mm = mm_access(task, PTRACE_MODE_READ_FSCREDS); in map_files_d_revalidate()
2298 task_dump_owner(task, 0, &inode->i_uid, &inode->i_gid); in map_files_d_revalidate()
2300 security_task_to_inode(task, inode); in map_files_d_revalidate()
2305 put_task_struct(task); in map_files_d_revalidate()
2320 struct task_struct *task; in map_files_get_link() local
2325 task = get_proc_task(d_inode(dentry)); in map_files_get_link()
2326 if (!task) in map_files_get_link()
2329 mm = get_task_mm(task); in map_files_get_link()
2330 put_task_struct(task); in map_files_get_link()
2390 struct task_struct *task, const void *ptr) in proc_map_files_instantiate() argument
2396 inode = proc_pid_make_inode(dentry->d_sb, task, S_IFLNK | in proc_map_files_instantiate()
2417 struct task_struct *task; in proc_map_files_lookup() local
2422 task = get_proc_task(dir); in proc_map_files_lookup()
2423 if (!task) in proc_map_files_lookup()
2427 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_lookup()
2434 mm = get_task_mm(task); in proc_map_files_lookup()
2448 result = proc_map_files_instantiate(dentry, task, in proc_map_files_lookup()
2456 put_task_struct(task); in proc_map_files_lookup()
2471 struct task_struct *task; in proc_map_files_readdir() local
2481 task = get_proc_task(file_inode(file)); in proc_map_files_readdir()
2482 if (!task) in proc_map_files_readdir()
2486 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) in proc_map_files_readdir()
2493 mm = get_task_mm(task); in proc_map_files_readdir()
2545 task, in proc_map_files_readdir()
2552 put_task_struct(task); in proc_map_files_readdir()
2567 struct task_struct *task; member
2577 tp->task = get_pid_task(tp->pid, PIDTYPE_PID); in timers_start()
2578 if (!tp->task) in timers_start()
2581 tp->sighand = lock_task_sighand(tp->task, &tp->flags); in timers_start()
2585 return seq_list_start(&tp->task->signal->posix_timers, *pos); in timers_start()
2591 return seq_list_next(v, &tp->task->signal->posix_timers, pos); in timers_next()
2599 unlock_task_sighand(tp->task, &tp->flags); in timers_stop()
2603 if (tp->task) { in timers_stop()
2604 put_task_struct(tp->task); in timers_stop()
2605 tp->task = NULL; in timers_stop()
2758 struct task_struct *task, const void *ptr) in proc_pident_instantiate() argument
2764 inode = proc_pid_make_inode(dentry->d_sb, task, p->mode); in proc_pident_instantiate()
2776 pid_update_inode(task, inode); in proc_pident_instantiate()
2786 struct task_struct *task = get_proc_task(dir); in proc_pident_lookup() local
2789 if (!task) in proc_pident_lookup()
2800 res = proc_pident_instantiate(dentry, task, p); in proc_pident_lookup()
2804 put_task_struct(task); in proc_pident_lookup()
2812 struct task_struct *task = get_proc_task(file_inode(file)); in proc_pident_readdir() local
2815 if (!task) in proc_pident_readdir()
2826 proc_pident_instantiate, task, p)) in proc_pident_readdir()
2831 put_task_struct(task); in proc_pident_readdir()
2849 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_read() local
2851 if (!task) in proc_pid_attr_read()
2854 length = security_getprocattr(task, PROC_I(inode)->op.lsm, in proc_pid_attr_read()
2857 put_task_struct(task); in proc_pid_attr_read()
2868 struct task_struct *task; in proc_pid_attr_write() local
2872 /* A task may only write when it was the opener. */ in proc_pid_attr_write()
2877 task = pid_task(proc_pid(inode), PIDTYPE_PID); in proc_pid_attr_write()
2878 if (!task) { in proc_pid_attr_write()
2882 /* A task may only write its own attributes. */ in proc_pid_attr_write()
2883 if (current != task) { in proc_pid_attr_write()
3024 struct task_struct *task = get_proc_task(file_inode(file)); in proc_coredump_filter_read() local
3030 if (!task) in proc_coredump_filter_read()
3034 mm = get_task_mm(task); in proc_coredump_filter_read()
3043 put_task_struct(task); in proc_coredump_filter_read()
3053 struct task_struct *task; in proc_coredump_filter_write() local
3065 task = get_proc_task(file_inode(file)); in proc_coredump_filter_write()
3066 if (!task) in proc_coredump_filter_write()
3069 mm = get_task_mm(task); in proc_coredump_filter_write()
3083 put_task_struct(task); in proc_coredump_filter_write()
3098 static int do_io_accounting(struct task_struct *task, struct seq_file *m, int whole) in do_io_accounting() argument
3100 struct task_io_accounting acct = task->ioac; in do_io_accounting()
3104 result = down_read_killable(&task->signal->exec_update_lock); in do_io_accounting()
3108 if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) { in do_io_accounting()
3113 if (whole && lock_task_sighand(task, &flags)) { in do_io_accounting()
3114 struct task_struct *t = task; in do_io_accounting()
3116 task_io_accounting_add(&acct, &task->signal->ioac); in do_io_accounting()
3117 while_each_thread(task, t) in do_io_accounting()
3120 unlock_task_sighand(task, &flags); in do_io_accounting()
3140 up_read(&task->signal->exec_update_lock); in do_io_accounting()
3145 struct pid *pid, struct task_struct *task) in proc_tid_io_accounting() argument
3147 return do_io_accounting(task, m, 0); in proc_tid_io_accounting()
3151 struct pid *pid, struct task_struct *task) in proc_tgid_io_accounting() argument
3153 return do_io_accounting(task, m, 1); in proc_tgid_io_accounting()
3162 struct task_struct *task; in proc_id_map_open() local
3166 task = get_proc_task(inode); in proc_id_map_open()
3167 if (task) { in proc_id_map_open()
3169 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_id_map_open()
3171 put_task_struct(task); in proc_id_map_open()
3240 struct task_struct *task; in proc_setgroups_open() local
3244 task = get_proc_task(inode); in proc_setgroups_open()
3245 if (task) { in proc_setgroups_open()
3247 ns = get_user_ns(task_cred_xxx(task, user_ns)); in proc_setgroups_open()
3249 put_task_struct(task); in proc_setgroups_open()
3290 struct pid *pid, struct task_struct *task) in proc_pid_personality() argument
3292 int err = lock_trace(task); in proc_pid_personality()
3294 seq_printf(m, "%08x\n", task->personality); in proc_pid_personality()
3295 unlock_trace(task); in proc_pid_personality()
3302 struct pid *pid, struct task_struct *task) in proc_pid_patch_state() argument
3304 seq_printf(m, "%d\n", task->patch_state); in proc_pid_patch_state()
3311 struct pid *pid, struct task_struct *task) in proc_stack_depth() argument
3314 (task->prev_lowest_stack & (THREAD_SIZE - 1)); in proc_stack_depth()
3316 (task->lowest_stack & (THREAD_SIZE - 1)); in proc_stack_depth()
3326 struct pid *pid, struct task_struct *task) in proc_token_operations() argument
3328 seq_printf(m, "%#llx %#llx\n", task->token, task->ftoken); in proc_token_operations()
3340 DIR("task", S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations),
3506 * It is safe and reasonable to cache /proc entries for a task until
3507 * that task exits. After that they just clog up the dcache with
3523 struct task_struct *task, const void *ptr) in proc_pid_instantiate() argument
3527 inode = proc_pid_make_inode(dentry->d_sb, task, S_IFDIR | S_IRUGO | S_IXUGO); in proc_pid_instantiate()
3536 pid_update_inode(task, inode); in proc_pid_instantiate()
3544 struct task_struct *task; in proc_pid_lookup() local
3557 task = find_task_by_pid_ns(tgid, ns); in proc_pid_lookup()
3558 if (task) in proc_pid_lookup()
3559 get_task_struct(task); in proc_pid_lookup()
3561 if (!task) in proc_pid_lookup()
3566 if (!has_pid_permissions(fs_info, task, HIDEPID_NO_ACCESS)) in proc_pid_lookup()
3570 result = proc_pid_instantiate(dentry, task, NULL); in proc_pid_lookup()
3572 put_task_struct(task); in proc_pid_lookup()
3578 * Find the first task with tgid >= tgid
3583 struct task_struct *task; member
3589 if (iter.task) in next_tgid()
3590 put_task_struct(iter.task); in next_tgid()
3593 iter.task = NULL; in next_tgid()
3597 iter.task = pid_task(pid, PIDTYPE_TGID); in next_tgid()
3598 if (!iter.task) { in next_tgid()
3602 get_task_struct(iter.task); in next_tgid()
3634 iter.task = NULL; in proc_pid_readdir()
3636 iter.task; in proc_pid_readdir()
3642 if (!has_pid_permissions(fs_info, iter.task, HIDEPID_INVISIBLE)) in proc_pid_readdir()
3648 proc_pid_instantiate, iter.task, NULL)) { in proc_pid_readdir()
3649 put_task_struct(iter.task); in proc_pid_readdir()
3659 * used for the node /proc/<pid>/task/<tid>/comm.
3660 * It bypasses generic permission checks in the case where a task of the same
3661 * task group attempts to access the node.
3672 struct task_struct *task; in proc_tid_comm_permission() local
3674 task = get_proc_task(inode); in proc_tid_comm_permission()
3675 if (!task) in proc_tid_comm_permission()
3677 is_same_tgroup = same_thread_group(current, task); in proc_tid_comm_permission()
3678 put_task_struct(task); in proc_tid_comm_permission()
3681 /* This file (/proc/<pid>/task/<tid>/comm) can always be in proc_tid_comm_permission()
3825 struct task_struct *task, const void *ptr) in proc_task_instantiate() argument
3828 inode = proc_pid_make_inode(dentry->d_sb, task, S_IFDIR | S_IRUGO | S_IXUGO); in proc_task_instantiate()
3837 pid_update_inode(task, inode); in proc_task_instantiate()
3845 struct task_struct *task; in proc_task_lookup() local
3862 task = find_task_by_pid_ns(tid, ns); in proc_task_lookup()
3863 if (task) in proc_task_lookup()
3864 get_task_struct(task); in proc_task_lookup()
3866 if (!task) in proc_task_lookup()
3868 if (!same_thread_group(leader, task)) in proc_task_lookup()
3871 result = proc_task_instantiate(dentry, task, NULL); in proc_task_lookup()
3873 put_task_struct(task); in proc_task_lookup()
3895 struct task_struct *pos, *task; in first_tid() local
3902 task = pid_task(pid, PIDTYPE_PID); in first_tid()
3903 if (!task) in first_tid()
3909 if (pos && same_thread_group(pos, task)) in first_tid()
3914 if (nr >= get_nr_threads(task)) in first_tid()
3920 pos = task = task->group_leader; in first_tid()
3924 } while_each_thread(task, pos); in first_tid()
3957 /* for the /proc/TGID/task/ directories */
3961 struct task_struct *task; in proc_task_readdir() local
3977 for (task = first_tid(proc_pid(inode), tid, ctx->pos - 2, ns); in proc_task_readdir()
3978 task; in proc_task_readdir()
3979 task = next_tid(task), ctx->pos++) { in proc_task_readdir()
3982 tid = task_pid_nr_ns(task, ns); in proc_task_readdir()
3985 proc_task_instantiate, task, NULL)) { in proc_task_readdir()
3989 put_task_struct(task); in proc_task_readdir()