Commit 58bfdd6deeec02b73691ea2c951a3c5d743bca63

Authored by Pavel Emelyanov
Committed by Linus Torvalds
1 parent c5289a6949

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>

Showing 3 changed files with 30 additions and 1 deletions Side-by-side Diff

include/linux/utsname.h
... ... @@ -35,6 +35,7 @@
35 35 #include <linux/sched.h>
36 36 #include <linux/kref.h>
37 37 #include <linux/nsproxy.h>
  38 +#include <linux/err.h>
38 39 #include <asm/atomic.h>
39 40  
40 41 struct uts_namespace {
... ... @@ -43,6 +44,7 @@
43 44 };
44 45 extern struct uts_namespace init_uts_ns;
45 46  
  47 +#ifdef CONFIG_UTS_NS
46 48 static inline void get_uts_ns(struct uts_namespace *ns)
47 49 {
48 50 kref_get(&ns->kref);
... ... @@ -56,6 +58,25 @@
56 58 {
57 59 kref_put(&ns->kref, free_uts_ns);
58 60 }
  61 +#else
  62 +static inline void get_uts_ns(struct uts_namespace *ns)
  63 +{
  64 +}
  65 +
  66 +static inline void put_uts_ns(struct uts_namespace *ns)
  67 +{
  68 +}
  69 +
  70 +static inline struct uts_namespace *copy_utsname(unsigned long flags,
  71 + struct uts_namespace *ns)
  72 +{
  73 + if (flags & CLONE_NEWUTS)
  74 + return ERR_PTR(-EINVAL);
  75 +
  76 + return ns;
  77 +}
  78 +#endif
  79 +
59 80 static inline struct new_utsname *utsname(void)
60 81 {
61 82 return &current->nsproxy->uts_ns->name;
... ... @@ -429,6 +429,13 @@
429 429 or same user id or pid may refer to different tasks when used in
430 430 different namespaces.
431 431  
  432 +config UTS_NS
  433 + bool "UTS namespace"
  434 + depends on NAMESPACES
  435 + help
  436 + In this namespace tasks see different info provided with the
  437 + uname() system call
  438 +
432 439 config BLK_DEV_INITRD
433 440 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
434 441 depends on BROKEN || !FRV
... ... @@ -9,7 +9,7 @@
9 9 rcupdate.o extable.o params.o posix-timers.o \
10 10 kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
11 11 hrtimer.o rwsem.o nsproxy.o srcu.o \
12   - utsname.o notifier.o ksysfs.o pm_qos_params.o
  12 + notifier.o ksysfs.o pm_qos_params.o
13 13  
14 14 obj-$(CONFIG_SYSCTL) += sysctl_check.o
15 15 obj-$(CONFIG_STACKTRACE) += stacktrace.o
... ... @@ -33,6 +33,7 @@
33 33 obj-$(CONFIG_UID16) += uid16.o
34 34 obj-$(CONFIG_MODULES) += module.o
35 35 obj-$(CONFIG_KALLSYMS) += kallsyms.o
  36 +obj-$(CONFIG_UTS_NS) += utsname.o
36 37 obj-$(CONFIG_PM) += power/
37 38 obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
38 39 obj-$(CONFIG_KEXEC) += kexec.o