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

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
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -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;
+7 −0
Original line number Original line Diff line number Diff line
@@ -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
+2 −1
Original line number Original line Diff line number Diff line
@@ -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