mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
ns proc: Add support for the uts namespace
Acked-by: Daniel Lezcano <daniel.lezcano@free.fr> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
13b6f57623
commit
34482e89a5
@ -19,6 +19,9 @@ static const struct proc_ns_operations *ns_entries[] = {
|
||||
#ifdef CONFIG_NET_NS
|
||||
&netns_operations,
|
||||
#endif
|
||||
#ifdef CONFIG_UTS_NS
|
||||
&utsns_operations,
|
||||
#endif
|
||||
};
|
||||
|
||||
static const struct file_operations ns_file_operations = {
|
||||
|
@ -266,6 +266,7 @@ struct proc_ns_operations {
|
||||
int (*install)(struct nsproxy *nsproxy, void *ns);
|
||||
};
|
||||
extern const struct proc_ns_operations netns_operations;
|
||||
extern const struct proc_ns_operations utsns_operations;
|
||||
|
||||
union proc_op {
|
||||
int (*proc_get_link)(struct inode *, struct path *);
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/user_namespace.h>
|
||||
#include <linux/proc_fs.h>
|
||||
|
||||
static struct uts_namespace *create_uts_ns(void)
|
||||
{
|
||||
@ -79,3 +80,41 @@ void free_uts_ns(struct kref *kref)
|
||||
put_user_ns(ns->user_ns);
|
||||
kfree(ns);
|
||||
}
|
||||
|
||||
static void *utsns_get(struct task_struct *task)
|
||||
{
|
||||
struct uts_namespace *ns = NULL;
|
||||
struct nsproxy *nsproxy;
|
||||
|
||||
rcu_read_lock();
|
||||
nsproxy = task_nsproxy(task);
|
||||
if (nsproxy) {
|
||||
ns = nsproxy->uts_ns;
|
||||
get_uts_ns(ns);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
return ns;
|
||||
}
|
||||
|
||||
static void utsns_put(void *ns)
|
||||
{
|
||||
put_uts_ns(ns);
|
||||
}
|
||||
|
||||
static int utsns_install(struct nsproxy *nsproxy, void *ns)
|
||||
{
|
||||
get_uts_ns(ns);
|
||||
put_uts_ns(nsproxy->uts_ns);
|
||||
nsproxy->uts_ns = ns;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct proc_ns_operations utsns_operations = {
|
||||
.name = "uts",
|
||||
.type = CLONE_NEWUTS,
|
||||
.get = utsns_get,
|
||||
.put = utsns_put,
|
||||
.install = utsns_install,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user