Lines Matching refs:task
159 static int get_task_root(struct task_struct *task, struct path *root) in get_task_root() argument
163 task_lock(task); in get_task_root()
164 if (task->fs) { in get_task_root()
165 get_fs_root(task->fs, root); in get_task_root()
168 task_unlock(task); in get_task_root()
174 struct task_struct *task = get_proc_task(dentry->d_inode); in proc_cwd_link() local
177 if (task) { in proc_cwd_link()
178 task_lock(task); in proc_cwd_link()
179 if (task->fs) { in proc_cwd_link()
180 get_fs_pwd(task->fs, path); in proc_cwd_link()
183 task_unlock(task); in proc_cwd_link()
184 put_task_struct(task); in proc_cwd_link()
191 struct task_struct *task = get_proc_task(dentry->d_inode); in proc_root_link() local
194 if (task) { in proc_root_link()
195 result = get_task_root(task, path); in proc_root_link()
196 put_task_struct(task); in proc_root_link()
201 struct mm_struct *mm_for_maps(struct task_struct *task) in mm_for_maps() argument
203 return mm_access(task, PTRACE_MODE_READ); in mm_for_maps()
206 static int proc_pid_cmdline(struct task_struct *task, char * buffer) in proc_pid_cmdline() argument
210 struct mm_struct *mm = get_task_mm(task); in proc_pid_cmdline()
221 res = access_process_vm(task, mm->arg_start, buffer, len, 0); in proc_pid_cmdline()
233 res += access_process_vm(task, mm->env_start, buffer+res, len, 0); in proc_pid_cmdline()
243 static int proc_pid_auxv(struct task_struct *task, char *buffer) in proc_pid_auxv() argument
245 struct mm_struct *mm = mm_for_maps(task); in proc_pid_auxv()
267 static int proc_pid_wchan(struct task_struct *task, char *buffer) in proc_pid_wchan() argument
272 wchan = get_wchan(task); in proc_pid_wchan()
275 if (!ptrace_may_access(task, PTRACE_MODE_READ)) in proc_pid_wchan()
284 static int lock_trace(struct task_struct *task) in lock_trace() argument
286 int err = mutex_lock_killable(&task->signal->cred_guard_mutex); in lock_trace()
289 if (!ptrace_may_access(task, PTRACE_MODE_ATTACH)) { in lock_trace()
290 mutex_unlock(&task->signal->cred_guard_mutex); in lock_trace()
296 static void unlock_trace(struct task_struct *task) in unlock_trace() argument
298 mutex_unlock(&task->signal->cred_guard_mutex); in unlock_trace()
306 struct pid *pid, struct task_struct *task) in proc_pid_stack() argument
322 err = lock_trace(task); in proc_pid_stack()
324 save_stack_trace_tsk(task, &trace); in proc_pid_stack()
330 unlock_trace(task); in proc_pid_stack()
342 static int proc_pid_schedstat(struct task_struct *task, char *buffer) in proc_pid_schedstat() argument
345 (unsigned long long)task->se.sum_exec_runtime, in proc_pid_schedstat()
346 (unsigned long long)task->sched_info.run_delay, in proc_pid_schedstat()
347 task->sched_info.pcount); in proc_pid_schedstat()
356 struct task_struct *task = get_proc_task(inode); in lstats_show_proc() local
358 if (!task) in lstats_show_proc()
362 struct latency_record *lr = &task->latency_record[i]; in lstats_show_proc()
379 put_task_struct(task); in lstats_show_proc()
391 struct task_struct *task = get_proc_task(file->f_dentry->d_inode); in lstats_write() local
393 if (!task) in lstats_write()
395 clear_all_latency_tracing(task); in lstats_write()
396 put_task_struct(task); in lstats_write()
411 static int proc_oom_score(struct task_struct *task, char *buffer) in proc_oom_score() argument
416 if (pid_alive(task)) in proc_oom_score()
417 points = oom_badness(task, NULL, NULL, in proc_oom_score()
448 static int proc_pid_limits(struct task_struct *task, char *buffer) in proc_pid_limits() argument
457 if (!lock_task_sighand(task, &flags)) in proc_pid_limits()
459 memcpy(rlim, task->signal->rlim, sizeof(struct rlimit) * RLIM_NLIMITS); in proc_pid_limits()
460 unlock_task_sighand(task, &flags); in proc_pid_limits()
493 static int proc_pid_syscall(struct task_struct *task, char *buffer) in proc_pid_syscall() argument
497 int res = lock_trace(task); in proc_pid_syscall()
501 if (task_current_syscall(task, &nr, args, 6, &sp, &pc)) in proc_pid_syscall()
511 unlock_trace(task); in proc_pid_syscall()
523 struct task_struct *task; in proc_fd_access_allowed() local
529 task = get_proc_task(inode); in proc_fd_access_allowed()
530 if (task) { in proc_fd_access_allowed()
531 allowed = ptrace_may_access(task, PTRACE_MODE_READ); in proc_fd_access_allowed()
532 put_task_struct(task); in proc_fd_access_allowed()
566 struct task_struct *task, in has_pid_permissions() argument
573 return ptrace_may_access(task, PTRACE_MODE_READ); in has_pid_permissions()
580 struct task_struct *task; in proc_pid_permission() local
583 task = get_proc_task(inode); in proc_pid_permission()
584 if (!task) in proc_pid_permission()
586 has_perms = has_pid_permissions(pid, task, 1); in proc_pid_permission()
587 put_task_struct(task); in proc_pid_permission()
619 struct task_struct *task = get_proc_task(inode); in proc_info_read() local
622 if (!task) in proc_info_read()
632 length = PROC_I(inode)->op.proc_read(task, (char*)page); in proc_info_read()
638 put_task_struct(task); in proc_info_read()
653 struct task_struct *task; in proc_single_show() local
658 task = get_pid_task(pid, PIDTYPE_PID); in proc_single_show()
659 if (!task) in proc_single_show()
662 ret = PROC_I(inode)->op.proc_show(m, ns, pid, task); in proc_single_show()
664 put_task_struct(task); in proc_single_show()
682 struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); in mem_open() local
685 if (!task) in mem_open()
688 mm = mm_access(task, PTRACE_MODE_ATTACH); in mem_open()
689 put_task_struct(task); in mem_open()
807 struct task_struct *task = get_proc_task(file->f_dentry->d_inode); in environ_read() local
813 if (!task) in environ_read()
822 mm = mm_for_maps(task); in environ_read()
839 retval = access_process_vm(task, (mm->env_start + src), in environ_read()
863 put_task_struct(task); in environ_read()
876 struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); in oom_adjust_read() local
882 if (!task) in oom_adjust_read()
885 if (lock_task_sighand(task, &flags)) { in oom_adjust_read()
886 oom_adjust = task->signal->oom_adj; in oom_adjust_read()
887 unlock_task_sighand(task, &flags); in oom_adjust_read()
890 put_task_struct(task); in oom_adjust_read()
900 struct task_struct *task; in oom_adjust_write() local
923 task = get_proc_task(file->f_path.dentry->d_inode); in oom_adjust_write()
924 if (!task) { in oom_adjust_write()
929 task_lock(task); in oom_adjust_write()
930 if (!task->mm) { in oom_adjust_write()
935 if (!lock_task_sighand(task, &flags)) { in oom_adjust_write()
940 if (oom_adjust < task->signal->oom_adj && !capable(CAP_SYS_RESOURCE)) { in oom_adjust_write()
950 current->comm, task_pid_nr(current), task_pid_nr(task), in oom_adjust_write()
951 task_pid_nr(task)); in oom_adjust_write()
952 task->signal->oom_adj = oom_adjust; in oom_adjust_write()
957 if (task->signal->oom_adj == OOM_ADJUST_MAX) in oom_adjust_write()
958 task->signal->oom_score_adj = OOM_SCORE_ADJ_MAX; in oom_adjust_write()
960 task->signal->oom_score_adj = (oom_adjust * OOM_SCORE_ADJ_MAX) / in oom_adjust_write()
962 trace_oom_score_adj_update(task); in oom_adjust_write()
964 unlock_task_sighand(task, &flags); in oom_adjust_write()
966 task_unlock(task); in oom_adjust_write()
967 put_task_struct(task); in oom_adjust_write()
981 struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); in oom_score_adj_read() local
987 if (!task) in oom_score_adj_read()
989 if (lock_task_sighand(task, &flags)) { in oom_score_adj_read()
990 oom_score_adj = task->signal->oom_score_adj; in oom_score_adj_read()
991 unlock_task_sighand(task, &flags); in oom_score_adj_read()
993 put_task_struct(task); in oom_score_adj_read()
1001 struct task_struct *task; in oom_score_adj_write() local
1024 task = get_proc_task(file->f_path.dentry->d_inode); in oom_score_adj_write()
1025 if (!task) { in oom_score_adj_write()
1030 task_lock(task); in oom_score_adj_write()
1031 if (!task->mm) { in oom_score_adj_write()
1036 if (!lock_task_sighand(task, &flags)) { in oom_score_adj_write()
1041 if (oom_score_adj < task->signal->oom_score_adj_min && in oom_score_adj_write()
1047 task->signal->oom_score_adj = oom_score_adj; in oom_score_adj_write()
1049 task->signal->oom_score_adj_min = oom_score_adj; in oom_score_adj_write()
1050 trace_oom_score_adj_update(task); in oom_score_adj_write()
1055 if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) in oom_score_adj_write()
1056 task->signal->oom_adj = OOM_DISABLE; in oom_score_adj_write()
1058 task->signal->oom_adj = (oom_score_adj * OOM_ADJUST_MAX) / in oom_score_adj_write()
1061 unlock_task_sighand(task, &flags); in oom_score_adj_write()
1063 task_unlock(task); in oom_score_adj_write()
1064 put_task_struct(task); in oom_score_adj_write()
1081 struct task_struct *task = get_proc_task(inode); in proc_loginuid_read() local
1085 if (!task) in proc_loginuid_read()
1088 audit_get_loginuid(task)); in proc_loginuid_read()
1089 put_task_struct(task); in proc_loginuid_read()
1148 struct task_struct *task = get_proc_task(inode); in proc_sessionid_read() local
1152 if (!task) in proc_sessionid_read()
1155 audit_get_sessionid(task)); in proc_sessionid_read()
1156 put_task_struct(task); in proc_sessionid_read()
1170 struct task_struct *task = get_proc_task(file->f_dentry->d_inode); in proc_fault_inject_read() local
1175 if (!task) in proc_fault_inject_read()
1177 make_it_fail = task->make_it_fail; in proc_fault_inject_read()
1178 put_task_struct(task); in proc_fault_inject_read()
1188 struct task_struct *task; in proc_fault_inject_write() local
1202 task = get_proc_task(file->f_dentry->d_inode); in proc_fault_inject_write()
1203 if (!task) in proc_fault_inject_write()
1205 task->make_it_fail = make_it_fail; in proc_fault_inject_write()
1206 put_task_struct(task); in proc_fault_inject_write()
1405 struct task_struct *task; in proc_exe_link() local
1409 task = get_proc_task(dentry->d_inode); in proc_exe_link()
1410 if (!task) in proc_exe_link()
1412 mm = get_task_mm(task); in proc_exe_link()
1413 put_task_struct(task); in proc_exe_link()
1497 static int task_dumpable(struct task_struct *task) in task_dumpable() argument
1502 task_lock(task); in task_dumpable()
1503 mm = task->mm; in task_dumpable()
1506 task_unlock(task); in task_dumpable()
1512 struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *task) in proc_pid_make_inode() argument
1533 ei->pid = get_task_pid(task, PIDTYPE_PID); in proc_pid_make_inode()
1537 if (task_dumpable(task)) { in proc_pid_make_inode()
1539 cred = __task_cred(task); in proc_pid_make_inode()
1544 security_task_to_inode(task, inode); in proc_pid_make_inode()
1557 struct task_struct *task; in pid_getattr() local
1566 task = pid_task(proc_pid(inode), PIDTYPE_PID); in pid_getattr()
1567 if (task) { in pid_getattr()
1568 if (!has_pid_permissions(pid, task, 2)) { in pid_getattr()
1577 task_dumpable(task)) { in pid_getattr()
1578 cred = __task_cred(task); in pid_getattr()
1607 struct task_struct *task; in pid_revalidate() local
1614 task = get_proc_task(inode); in pid_revalidate()
1616 if (task) { in pid_revalidate()
1618 task_dumpable(task)) { in pid_revalidate()
1620 cred = __task_cred(task); in pid_revalidate()
1629 security_task_to_inode(task, inode); in pid_revalidate()
1630 put_task_struct(task); in pid_revalidate()
1668 instantiate_t instantiate, struct task_struct *task, const void *ptr) in proc_fill_cache() argument
1685 child = instantiate(dir->d_inode, new, task, ptr); in proc_fill_cache()
1734 struct task_struct *task = get_proc_task(inode); in proc_fd_info() local
1739 if (task) { in proc_fd_info()
1740 files = get_files_struct(task); in proc_fd_info()
1741 put_task_struct(task); in proc_fd_info()
1787 struct task_struct *task; in tid_fd_revalidate() local
1796 task = get_proc_task(inode); in tid_fd_revalidate()
1799 if (task) { in tid_fd_revalidate()
1800 files = get_files_struct(task); in tid_fd_revalidate()
1811 if (task_dumpable(task)) { in tid_fd_revalidate()
1813 cred = __task_cred(task); in tid_fd_revalidate()
1831 security_task_to_inode(task, inode); in tid_fd_revalidate()
1832 put_task_struct(task); in tid_fd_revalidate()
1838 put_task_struct(task); in tid_fd_revalidate()
1851 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_fd_instantiate() argument
1858 inode = proc_pid_make_inode(dir->i_sb, task); in proc_fd_instantiate()
1882 struct task_struct *task = get_proc_task(dir); in proc_lookupfd_common() local
1886 if (!task) in proc_lookupfd_common()
1891 result = instantiate(dir, dentry, task, &fd); in proc_lookupfd_common()
1893 put_task_struct(task); in proc_lookupfd_common()
2010 struct task_struct *task; in map_files_d_revalidate() local
2024 task = get_proc_task(inode); in map_files_d_revalidate()
2025 if (!task) in map_files_d_revalidate()
2028 if (!ptrace_may_access(task, PTRACE_MODE_READ)) in map_files_d_revalidate()
2031 mm = get_task_mm(task); in map_files_d_revalidate()
2044 if (task_dumpable(task)) { in map_files_d_revalidate()
2046 cred = __task_cred(task); in map_files_d_revalidate()
2054 security_task_to_inode(task, inode); in map_files_d_revalidate()
2059 put_task_struct(task); in map_files_d_revalidate()
2077 struct task_struct *task; in proc_map_files_get_link() local
2082 task = get_proc_task(dentry->d_inode); in proc_map_files_get_link()
2083 if (!task) in proc_map_files_get_link()
2086 mm = get_task_mm(task); in proc_map_files_get_link()
2087 put_task_struct(task); in proc_map_files_get_link()
2118 struct task_struct *task, const void *ptr) in proc_map_files_instantiate() argument
2127 inode = proc_pid_make_inode(dir->i_sb, task); in proc_map_files_instantiate()
2154 struct task_struct *task; in proc_map_files_lookup() local
2163 task = get_proc_task(dir); in proc_map_files_lookup()
2164 if (!task) in proc_map_files_lookup()
2168 if (!ptrace_may_access(task, PTRACE_MODE_READ)) in proc_map_files_lookup()
2175 mm = get_task_mm(task); in proc_map_files_lookup()
2184 result = proc_map_files_instantiate(dir, dentry, task, vma->vm_file); in proc_map_files_lookup()
2190 put_task_struct(task); in proc_map_files_lookup()
2207 struct task_struct *task; in proc_map_files_readdir() local
2217 task = get_proc_task(inode); in proc_map_files_readdir()
2218 if (!task) in proc_map_files_readdir()
2222 if (!ptrace_may_access(task, PTRACE_MODE_READ)) in proc_map_files_readdir()
2244 mm = get_task_mm(task); in proc_map_files_readdir()
2301 task, p->file); in proc_map_files_readdir()
2322 put_task_struct(task); in proc_map_files_readdir()
2367 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_fdinfo_instantiate() argument
2374 inode = proc_pid_make_inode(dir->i_sb, task); in proc_fdinfo_instantiate()
2420 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_pident_instantiate() argument
2427 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pident_instantiate()
2455 struct task_struct *task = get_proc_task(dir); in proc_pident_lookup() local
2460 if (!task) in proc_pident_lookup()
2477 error = proc_pident_instantiate(dir, dentry, task, p); in proc_pident_lookup()
2479 put_task_struct(task); in proc_pident_lookup()
2485 filldir_t filldir, struct task_struct *task, const struct pid_entry *p) in proc_pident_fill_cache() argument
2488 proc_pident_instantiate, task, p); in proc_pident_fill_cache()
2498 struct task_struct *task = get_proc_task(inode); in proc_pident_readdir() local
2504 if (!task) in proc_pident_readdir()
2533 if (proc_pident_fill_cache(filp, dirent, filldir, task, p) < 0) in proc_pident_readdir()
2542 put_task_struct(task); in proc_pident_readdir()
2554 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_read() local
2556 if (!task) in proc_pid_attr_read()
2559 length = security_getprocattr(task, in proc_pid_attr_read()
2562 put_task_struct(task); in proc_pid_attr_read()
2575 struct task_struct *task = get_proc_task(inode); in proc_pid_attr_write() local
2578 if (!task) in proc_pid_attr_write()
2598 length = mutex_lock_interruptible(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2602 length = security_setprocattr(task, in proc_pid_attr_write()
2605 mutex_unlock(&task->signal->cred_guard_mutex); in proc_pid_attr_write()
2609 put_task_struct(task); in proc_pid_attr_write()
2661 struct task_struct *task = get_proc_task(file->f_dentry->d_inode); in proc_coredump_filter_read() local
2667 if (!task) in proc_coredump_filter_read()
2671 mm = get_task_mm(task); in proc_coredump_filter_read()
2680 put_task_struct(task); in proc_coredump_filter_read()
2690 struct task_struct *task; in proc_coredump_filter_write() local
2713 task = get_proc_task(file->f_dentry->d_inode); in proc_coredump_filter_write()
2714 if (!task) in proc_coredump_filter_write()
2718 mm = get_task_mm(task); in proc_coredump_filter_write()
2731 put_task_struct(task); in proc_coredump_filter_write()
2801 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_base_instantiate() argument
2822 ei->pid = get_task_pid(task, PIDTYPE_PID); in proc_base_instantiate()
2848 struct task_struct *task = get_proc_task(dir); in proc_base_lookup() local
2853 if (!task) in proc_base_lookup()
2867 error = proc_base_instantiate(dir, dentry, task, p); in proc_base_lookup()
2870 put_task_struct(task); in proc_base_lookup()
2876 filldir_t filldir, struct task_struct *task, const struct pid_entry *p) in proc_base_fill_cache() argument
2879 proc_base_instantiate, task, p); in proc_base_fill_cache()
2883 static int do_io_accounting(struct task_struct *task, char *buffer, int whole) in do_io_accounting() argument
2885 struct task_io_accounting acct = task->ioac; in do_io_accounting()
2889 result = mutex_lock_killable(&task->signal->cred_guard_mutex); in do_io_accounting()
2893 if (!ptrace_may_access(task, PTRACE_MODE_READ)) { in do_io_accounting()
2898 if (whole && lock_task_sighand(task, &flags)) { in do_io_accounting()
2899 struct task_struct *t = task; in do_io_accounting()
2901 task_io_accounting_add(&acct, &task->signal->ioac); in do_io_accounting()
2902 while_each_thread(task, t) in do_io_accounting()
2905 unlock_task_sighand(task, &flags); in do_io_accounting()
2923 mutex_unlock(&task->signal->cred_guard_mutex); in do_io_accounting()
2927 static int proc_tid_io_accounting(struct task_struct *task, char *buffer) in proc_tid_io_accounting() argument
2929 return do_io_accounting(task, buffer, 0); in proc_tid_io_accounting()
2932 static int proc_tgid_io_accounting(struct task_struct *task, char *buffer) in proc_tgid_io_accounting() argument
2934 return do_io_accounting(task, buffer, 1); in proc_tgid_io_accounting()
2939 struct pid *pid, struct task_struct *task) in proc_pid_personality() argument
2941 int err = lock_trace(task); in proc_pid_personality()
2943 seq_printf(m, "%08x\n", task->personality); in proc_pid_personality()
2944 unlock_trace(task); in proc_pid_personality()
3135 void proc_flush_task(struct task_struct *task) in proc_flush_task() argument
3141 pid = task_pid(task); in proc_flush_task()
3142 tgid = task_tgid(task); in proc_flush_task()
3157 struct task_struct *task, const void *ptr) in proc_pid_instantiate() argument
3162 inode = proc_pid_make_inode(dir->i_sb, task); in proc_pid_instantiate()
3187 struct task_struct *task; in proc_pid_lookup() local
3201 task = find_task_by_pid_ns(tgid, ns); in proc_pid_lookup()
3202 if (task) in proc_pid_lookup()
3203 get_task_struct(task); in proc_pid_lookup()
3205 if (!task) in proc_pid_lookup()
3208 result = proc_pid_instantiate(dir, dentry, task, NULL); in proc_pid_lookup()
3209 put_task_struct(task); in proc_pid_lookup()
3220 struct task_struct *task; member
3226 if (iter.task) in next_tgid()
3227 put_task_struct(iter.task); in next_tgid()
3230 iter.task = NULL; in next_tgid()
3234 iter.task = pid_task(pid, PIDTYPE_PID); in next_tgid()
3247 if (!iter.task || !has_group_leader_pid(iter.task)) { in next_tgid()
3251 get_task_struct(iter.task); in next_tgid()
3265 proc_pid_instantiate, iter.task, NULL); in proc_pid_fill_cache()
3298 iter.task = NULL; in proc_pid_readdir()
3301 iter.task; in proc_pid_readdir()
3303 if (has_pid_permissions(ns, iter.task, 2)) in proc_pid_readdir()
3310 put_task_struct(iter.task); in proc_pid_readdir()
3422 struct dentry *dentry, struct task_struct *task, const void *ptr) in proc_task_instantiate() argument
3426 inode = proc_pid_make_inode(dir->i_sb, task); in proc_task_instantiate()
3451 struct task_struct *task; in proc_task_lookup() local
3465 task = find_task_by_pid_ns(tid, ns); in proc_task_lookup()
3466 if (task) in proc_task_lookup()
3467 get_task_struct(task); in proc_task_lookup()
3469 if (!task) in proc_task_lookup()
3471 if (!same_thread_group(leader, task)) in proc_task_lookup()
3474 result = proc_task_instantiate(dir, dentry, task, NULL); in proc_task_lookup()
3476 put_task_struct(task); in proc_task_lookup()
3553 struct task_struct *task, int tid) in proc_task_fill_cache() argument
3558 proc_task_instantiate, task, NULL); in proc_task_fill_cache()
3567 struct task_struct *task; in proc_task_readdir() local
3573 task = get_proc_task(inode); in proc_task_readdir()
3574 if (!task) in proc_task_readdir()
3577 if (pid_alive(task)) { in proc_task_readdir()
3578 leader = task->group_leader; in proc_task_readdir()
3582 put_task_struct(task); in proc_task_readdir()
3608 for (task = first_tid(leader, tid, filp->f_pos - 2, ns); in proc_task_readdir()
3609 task; in proc_task_readdir()
3610 task = next_tid(task), filp->f_pos++) { in proc_task_readdir()
3611 tid = task_pid_nr_ns(task, ns); in proc_task_readdir()
3612 if (proc_task_fill_cache(filp, dirent, filldir, task, tid) < 0) { in proc_task_readdir()
3616 put_task_struct(task); in proc_task_readdir()