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: Pavel Emelyanov <xemul@openvz.org>
Acked-by: Serge 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Pavel Emelyanov 2008-02-08 04:18:21 -08:00 committed by Linus Torvalds
parent c5289a6949
commit 58bfdd6dee
3 changed files with 30 additions and 1 deletions

View file

@ -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 {
}; };
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)
{ {
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;

View file

@ -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

View file

@ -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
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