Commit 58bfdd6d authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by Linus Torvalds

namespaces: move the UTS namespace under UTS_NS option

Currently all the namespace management code is in the kernel/utsname.c file,
so just compile it out and make stubs in the appropriate header.

The init namespace itself is in init/version.c and is in the kernel all the
time.
Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
Cc: Cedric Le Goater <clg@fr.ibm.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Herbert Poetzl <herbert@13thfloor.at>
Cc: Kirill Korotaev <dev@sw.ru>
Cc: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c5289a69
...@@ -35,6 +35,7 @@ struct new_utsname { ...@@ -35,6 +35,7 @@ struct new_utsname {
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <linux/nsproxy.h> #include <linux/nsproxy.h>
#include <linux/err.h>
#include <asm/atomic.h> #include <asm/atomic.h>
struct uts_namespace { struct uts_namespace {
...@@ -43,6 +44,7 @@ struct uts_namespace { ...@@ -43,6 +44,7 @@ struct uts_namespace {
}; };
extern struct uts_namespace init_uts_ns; extern struct uts_namespace init_uts_ns;
#ifdef CONFIG_UTS_NS
static inline void get_uts_ns(struct uts_namespace *ns) static inline void get_uts_ns(struct uts_namespace *ns)
{ {
kref_get(&ns->kref); kref_get(&ns->kref);
...@@ -56,6 +58,25 @@ static inline void put_uts_ns(struct uts_namespace *ns) ...@@ -56,6 +58,25 @@ static inline void put_uts_ns(struct uts_namespace *ns)
{ {
kref_put(&ns->kref, free_uts_ns); kref_put(&ns->kref, free_uts_ns);
} }
#else
static inline void get_uts_ns(struct uts_namespace *ns)
{
}
static inline void put_uts_ns(struct uts_namespace *ns)
{
}
static inline struct uts_namespace *copy_utsname(unsigned long flags,
struct uts_namespace *ns)
{
if (flags & CLONE_NEWUTS)
return ERR_PTR(-EINVAL);
return ns;
}
#endif
static inline struct new_utsname *utsname(void) static inline struct new_utsname *utsname(void)
{ {
return &current->nsproxy->uts_ns->name; return &current->nsproxy->uts_ns->name;
......
...@@ -429,6 +429,13 @@ config NAMESPACES ...@@ -429,6 +429,13 @@ config NAMESPACES
or same user id or pid may refer to different tasks when used in or same user id or pid may refer to different tasks when used in
different namespaces. different namespaces.
config UTS_NS
bool "UTS namespace"
depends on NAMESPACES
help
In this namespace tasks see different info provided with the
uname() system call
config BLK_DEV_INITRD config BLK_DEV_INITRD
bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
depends on BROKEN || !FRV depends on BROKEN || !FRV
......
...@@ -9,7 +9,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \ ...@@ -9,7 +9,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \
rcupdate.o extable.o params.o posix-timers.o \ rcupdate.o extable.o params.o posix-timers.o \
kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
hrtimer.o rwsem.o nsproxy.o srcu.o \ hrtimer.o rwsem.o nsproxy.o srcu.o \
utsname.o notifier.o ksysfs.o pm_qos_params.o notifier.o ksysfs.o pm_qos_params.o
obj-$(CONFIG_SYSCTL) += sysctl_check.o obj-$(CONFIG_SYSCTL) += sysctl_check.o
obj-$(CONFIG_STACKTRACE) += stacktrace.o obj-$(CONFIG_STACKTRACE) += stacktrace.o
...@@ -33,6 +33,7 @@ obj-$(CONFIG_PROVE_LOCKING) += spinlock.o ...@@ -33,6 +33,7 @@ obj-$(CONFIG_PROVE_LOCKING) += spinlock.o
obj-$(CONFIG_UID16) += uid16.o obj-$(CONFIG_UID16) += uid16.o
obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_KALLSYMS) += kallsyms.o obj-$(CONFIG_KALLSYMS) += kallsyms.o
obj-$(CONFIG_UTS_NS) += utsname.o
obj-$(CONFIG_PM) += power/ obj-$(CONFIG_PM) += power/
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
obj-$(CONFIG_KEXEC) += kexec.o obj-$(CONFIG_KEXEC) += kexec.o
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment