Lines Matching +full:0 +full:ns
46 struct ns_common *ns = inode->i_private; in ns_dname() local
47 const struct proc_ns_operations *ns_ops = ns->ops; in ns_dname()
60 struct ns_common *ns = inode->i_private; in nsfs_evict() local
62 ns->ops->put(ns); in nsfs_evict()
68 struct ns_common *ns; in ns_get_path_cb() local
70 ns = ns_get_cb(private_data); in ns_get_path_cb()
71 if (!ns) in ns_get_path_cb()
74 return path_from_stashed(&ns->stashed, nsfs_mnt, ns, path); in ns_get_path_cb()
102 * @ns: the namespace to open
104 * This will consume a reference to @ns indendent of success or failure.
108 int open_namespace(struct ns_common *ns) in open_namespace() argument
115 err = path_from_stashed(&ns->stashed, nsfs_mnt, ns, &path); in open_namespace()
116 if (err < 0) in open_namespace()
120 if (fd < 0) in open_namespace()
131 int open_related_ns(struct ns_common *ns, in open_related_ns() argument
132 struct ns_common *(*get_ns)(struct ns_common *ns)) in open_related_ns() argument
136 relative = get_ns(ns); in open_related_ns()
156 kinfo->mnt_ns_id = mnt_ns->ns.ns_id; in copy_ns_info_to_user()
165 return 0; in copy_ns_info_to_user()
203 struct ns_common *ns; in ns_ioctl() local
213 ns = get_proc_ns(file_inode(filp)); in ns_ioctl()
216 return open_related_ns(ns, ns_get_owner); in ns_ioctl()
218 if (!ns->ops->get_parent) in ns_ioctl()
220 return open_related_ns(ns, ns->ops->get_parent); in ns_ioctl()
222 return ns->ns_type; in ns_ioctl()
224 if (ns->ns_type != CLONE_NEWUSER) in ns_ioctl()
226 user_ns = container_of(ns, struct user_namespace, ns); in ns_ioctl()
237 if (ns->ns_type != CLONE_NEWPID) in ns_ioctl()
241 pid_ns = container_of(ns, struct pid_namespace, ns); in ns_ioctl()
267 ret = 0; in ns_ioctl()
276 if (ns->ns_type != CLONE_NEWNS) in ns_ioctl()
284 id = ns->ns_id; in ns_ioctl()
296 if (ns->ns_type != CLONE_NEWNS) in ns_ioctl()
305 return copy_ns_info_to_user(to_mnt_ns(ns), uinfo, usize, &kinfo); in ns_ioctl()
317 if (ns->ns_type != CLONE_NEWNS) in ns_ioctl()
323 mnt_ns = get_sequential_mnt_ns(to_mnt_ns(ns), previous); in ns_ioctl()
327 ns = to_ns_common(mnt_ns); in ns_ioctl()
329 ret = path_from_stashed(&ns->stashed, nsfs_mnt, ns, &path); in ns_ioctl()
334 if (fd < 0) in ns_ioctl()
346 ret = copy_ns_info_to_user(to_mnt_ns(ns), uinfo, usize, &kinfo); in ns_ioctl()
366 struct ns_common *ns; in ns_get_name() local
369 ns = ns_ops->get(task); in ns_get_name()
370 if (ns) { in ns_get_name()
372 res = snprintf(buf, size, "%s:[%u]", name, ns->inum); in ns_get_name()
373 ns_ops->put(ns); in ns_get_name()
385 * @ns: current namespace
391 bool ns_match(const struct ns_common *ns, dev_t dev, ino_t ino) in ns_match() argument
393 return (ns->inum == ino) && (nsfs_mnt->mnt_sb->s_dev == dev); in ns_match()
400 const struct ns_common *ns = inode->i_private; in nsfs_show_path() local
401 const struct proc_ns_operations *ns_ops = ns->ops; in nsfs_show_path()
404 return 0; in nsfs_show_path()
415 struct ns_common *ns = data; in nsfs_init_inode() local
420 inode->i_ino = ns->inum; in nsfs_init_inode()
421 return 0; in nsfs_init_inode()
426 struct ns_common *ns = data; in nsfs_put_data() local
427 ns->ops->put(ns); in nsfs_put_data()
442 struct ns_common *ns = inode->i_private; in nsfs_encode_fh() local
455 fid->ns_id = ns->ns_id; in nsfs_encode_fh()
456 fid->ns_type = ns->ns_type; in nsfs_encode_fh()
467 struct ns_common *ns; in nsfs_fh_to_dentry() local
475 memchr_inv((void *)fid + NSFS_FID_SIZE_U32_LATEST, 0, in nsfs_fh_to_dentry()
487 ns = ns_tree_lookup_rcu(fid->ns_id, fid->ns_type); in nsfs_fh_to_dentry()
488 if (!ns) in nsfs_fh_to_dentry()
491 VFS_WARN_ON_ONCE(ns->ns_id != fid->ns_id); in nsfs_fh_to_dentry()
492 VFS_WARN_ON_ONCE(ns->ns_type != fid->ns_type); in nsfs_fh_to_dentry()
494 if (ns->inum != fid->ns_inum) in nsfs_fh_to_dentry()
497 if (!__ns_ref_get(ns)) in nsfs_fh_to_dentry()
501 switch (ns->ns_type) { in nsfs_fh_to_dentry()
504 if (!current_in_namespace(to_cg_ns(ns))) in nsfs_fh_to_dentry()
505 owning_ns = to_cg_ns(ns)->user_ns; in nsfs_fh_to_dentry()
510 if (!current_in_namespace(to_ipc_ns(ns))) in nsfs_fh_to_dentry()
511 owning_ns = to_ipc_ns(ns)->user_ns; in nsfs_fh_to_dentry()
515 if (!current_in_namespace(to_mnt_ns(ns))) in nsfs_fh_to_dentry()
516 owning_ns = to_mnt_ns(ns)->user_ns; in nsfs_fh_to_dentry()
520 if (!current_in_namespace(to_net_ns(ns))) in nsfs_fh_to_dentry()
521 owning_ns = to_net_ns(ns)->user_ns; in nsfs_fh_to_dentry()
526 if (!current_in_namespace(to_pid_ns(ns))) { in nsfs_fh_to_dentry()
527 owning_ns = to_pid_ns(ns)->user_ns; in nsfs_fh_to_dentry()
528 } else if (!READ_ONCE(to_pid_ns(ns)->child_reaper)) { in nsfs_fh_to_dentry()
529 ns->ops->put(ns); in nsfs_fh_to_dentry()
536 if (!current_in_namespace(to_time_ns(ns))) in nsfs_fh_to_dentry()
537 owning_ns = to_time_ns(ns)->user_ns; in nsfs_fh_to_dentry()
542 if (!current_in_namespace(to_user_ns(ns))) in nsfs_fh_to_dentry()
543 owning_ns = to_user_ns(ns); in nsfs_fh_to_dentry()
548 if (!current_in_namespace(to_uts_ns(ns))) in nsfs_fh_to_dentry()
549 owning_ns = to_uts_ns(ns)->user_ns; in nsfs_fh_to_dentry()
557 ns->ops->put(ns); in nsfs_fh_to_dentry()
562 ret = path_from_stashed(&ns->stashed, nsfs_mnt, ns, &path); in nsfs_fh_to_dentry()
573 return 0; in nsfs_export_permission()
578 return file_open_root(path, "", oflags, 0); in nsfs_export_open()
597 return 0; in nsfs_init_fs_context()