Lines Matching refs:pid
89 struct pid *pid_a = rb_entry(a, struct pid, pidfs_node); in pidfs_ino_cmp()
90 struct pid *pid_b = rb_entry(b, struct pid, pidfs_node); in pidfs_ino_cmp()
101 void pidfs_add_pid(struct pid *pid) in pidfs_add_pid() argument
133 pid->ino = pidfs_ino_nr; in pidfs_add_pid()
134 pid->stashed = NULL; in pidfs_add_pid()
135 pid->attr = NULL; in pidfs_add_pid()
139 rb_find_add_rcu(&pid->pidfs_node, &pidfs_ino_tree, pidfs_ino_cmp); in pidfs_add_pid()
143 void pidfs_remove_pid(struct pid *pid) in pidfs_remove_pid() argument
146 rb_erase(&pid->pidfs_node, &pidfs_ino_tree); in pidfs_remove_pid()
150 void pidfs_free_pid(struct pid *pid) in pidfs_free_pid() argument
152 struct pidfs_attr *attr __free(kfree) = no_free_ptr(pid->attr); in pidfs_free_pid()
159 VFS_WARN_ON_ONCE(pid->stashed); in pidfs_free_pid()
215 struct pid *pid = pidfd_pid(f); in pidfd_show_fdinfo() local
219 if (likely(pid_has_task(pid, PIDTYPE_PID))) { in pidfd_show_fdinfo()
221 nr = pid_nr_ns(pid, ns); in pidfd_show_fdinfo()
236 for (i = ns->level + 1; i <= pid->level; i++) in pidfd_show_fdinfo()
237 seq_put_decimal_ll(m, "\t", pid->numbers[i].nr); in pidfd_show_fdinfo()
249 struct pid *pid = pidfd_pid(file); in pidfd_poll() local
253 poll_wait(file, &pid->wait_pidfd, pts); in pidfd_poll()
261 task = pid_task(pid, PIDTYPE_PID); in pidfd_poll()
270 static inline bool pid_in_current_pidns(const struct pid *pid) in pid_in_current_pidns() argument
274 if (ns->level <= pid->level) in pid_in_current_pidns()
275 return pid->numbers[ns->level].ns == ns; in pid_in_current_pidns()
300 struct pid *pid = pidfd_pid(file); in pidfd_info() local
321 if (!pid_in_current_pidns(pid)) in pidfd_info()
324 attr = READ_ONCE(pid->attr); in pidfd_info()
342 task = get_pid_task(pid, PIDTYPE_PID); in pidfd_info()
402 kinfo.pid = task_pid_vnr(task); in pidfd_info()
405 if (kinfo.pid == 0 || kinfo.tgid == 0) in pidfd_info()
578 struct pid *pidfd_pid(const struct file *file) in pidfd_pid()
604 struct pid *pid = task_pid(tsk); in pidfs_exit() local
613 guard(spinlock_irq)(&pid->wait_pidfd.lock); in pidfs_exit()
614 attr = pid->attr; in pidfs_exit()
622 pid->attr = PIDFS_PID_DEAD; in pidfs_exit()
651 struct pid *pid = cprm->pid; in pidfs_coredump() local
656 attr = READ_ONCE(pid->attr); in pidfs_coredump()
695 struct pid *pid = inode->i_private; in pidfs_listxattr() local
696 struct pidfs_attr *attr = pid->attr; in pidfs_listxattr()
714 struct pid *pid = inode->i_private; in pidfs_evict_inode() local
717 put_pid(pid); in pidfs_evict_inode()
743 const struct pid *pid = inode->i_private; in pidfs_encode_fh() local
751 *(u64 *)fh = pid->ino; in pidfs_encode_fh()
758 const struct pid *pid = rb_entry(node, struct pid, pidfs_node); in pidfs_ino_find() local
760 if (pid_ino < pid->ino) in pidfs_ino_find()
762 if (pid_ino > pid->ino) in pidfs_ino_find()
768 static struct pid *pidfs_ino_get_pid(u64 ino) in pidfs_ino_get_pid()
770 struct pid *pid; in pidfs_ino_get_pid() local
785 pid = rb_entry(node, struct pid, pidfs_node); in pidfs_ino_get_pid()
788 if (pid_vnr(pid) == 0) in pidfs_ino_get_pid()
791 return get_pid(pid); in pidfs_ino_get_pid()
801 struct pid *pid; in pidfs_fh_to_dentry() local
814 pid = pidfs_ino_get_pid(pid_ino); in pidfs_fh_to_dentry()
815 if (!pid) in pidfs_fh_to_dentry()
818 ret = path_from_stashed(&pid->stashed, pidfs_mnt, pid, &path); in pidfs_fh_to_dentry()
822 VFS_WARN_ON_ONCE(!pid->attr); in pidfs_fh_to_dentry()
869 const struct pid *pid = data; in pidfs_init_inode() local
878 inode->i_ino = pidfs_ino(pid->ino); in pidfs_init_inode()
879 inode->i_generation = pidfs_gen(pid->ino); in pidfs_init_inode()
885 struct pid *pid = data; in pidfs_put_data() local
886 put_pid(pid); in pidfs_put_data()
897 int pidfs_register_pid(struct pid *pid) in pidfs_register_pid() argument
904 if (!pid) in pidfs_register_pid()
907 attr = READ_ONCE(pid->attr); in pidfs_register_pid()
918 guard(spinlock_irq)(&pid->wait_pidfd.lock); in pidfs_register_pid()
920 attr = pid->attr; in pidfs_register_pid()
926 pid->attr = no_free_ptr(new_attr); in pidfs_register_pid()
934 struct pid *pid = d_inode(dentry)->i_private; in pidfs_stash_dentry() local
936 VFS_WARN_ON_ONCE(stashed != &pid->stashed); in pidfs_stash_dentry()
938 ret = pidfs_register_pid(pid); in pidfs_stash_dentry()
955 struct pid *pid = inode->i_private; in pidfs_xattr_get() local
956 struct pidfs_attr *attr = pid->attr; in pidfs_xattr_get()
973 struct pid *pid = inode->i_private; in pidfs_xattr_set() local
974 struct pidfs_attr *attr = pid->attr; in pidfs_xattr_set()
989 smp_store_release(&pid->attr->xattrs, xattrs); in pidfs_xattr_set()
1036 struct file *pidfs_alloc_file(struct pid *pid, unsigned int flags) in pidfs_alloc_file() argument
1049 ret = path_from_stashed(&pid->stashed, pidfs_mnt, get_pid(pid), &path); in pidfs_alloc_file()
1053 VFS_WARN_ON_ONCE(!pid->attr); in pidfs_alloc_file()