diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-02-08 07:18:21 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:23 -0500 |
commit | 58bfdd6deeec02b73691ea2c951a3c5d743bca63 (patch) | |
tree | 8f46771858dee87080b0ed64bc176b25c239f3b1 | |
parent | c5289a69491f2b597e22d0456b46cc043deedbd8 (diff) |
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>
-rw-r--r-- | include/linux/utsname.h | 21 | ||||
-rw-r--r-- | init/Kconfig | 7 | ||||
-rw-r--r-- | kernel/Makefile | 3 |
3 files changed, 30 insertions, 1 deletions
diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 923db99175f2..11232676bfff 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h | |||
@@ -35,6 +35,7 @@ struct new_utsname { | |||
35 | #include <linux/sched.h> | 35 | #include <linux/sched.h> |
36 | #include <linux/kref.h> | 36 | #include <linux/kref.h> |
37 | #include <linux/nsproxy.h> | 37 | #include <linux/nsproxy.h> |
38 | #include <linux/err.h> | ||
38 | #include <asm/atomic.h> | 39 | #include <asm/atomic.h> |
39 | 40 | ||
40 | struct uts_namespace { | 41 | struct uts_namespace { |
@@ -43,6 +44,7 @@ struct uts_namespace { | |||
43 | }; | 44 | }; |
44 | extern struct uts_namespace init_uts_ns; | 45 | extern struct uts_namespace init_uts_ns; |
45 | 46 | ||
47 | #ifdef CONFIG_UTS_NS | ||
46 | static inline void get_uts_ns(struct uts_namespace *ns) | 48 | static inline void get_uts_ns(struct uts_namespace *ns) |
47 | { | 49 | { |
48 | kref_get(&ns->kref); | 50 | kref_get(&ns->kref); |
@@ -56,6 +58,25 @@ static inline void put_uts_ns(struct uts_namespace *ns) | |||
56 | { | 58 | { |
57 | kref_put(&ns->kref, free_uts_ns); | 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 | static inline struct new_utsname *utsname(void) | 80 | static inline struct new_utsname *utsname(void) |
60 | { | 81 | { |
61 | return ¤t->nsproxy->uts_ns->name; | 82 | return ¤t->nsproxy->uts_ns->name; |
diff --git a/init/Kconfig b/init/Kconfig index 7654207961a2..fef641af78c2 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -429,6 +429,13 @@ config NAMESPACES | |||
429 | or same user id or pid may refer to different tasks when used in | 429 | or same user id or pid may refer to different tasks when used in |
430 | different namespaces. | 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 | config BLK_DEV_INITRD | 439 | config BLK_DEV_INITRD |
433 | bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" | 440 | bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" |
434 | depends on BROKEN || !FRV | 441 | depends on BROKEN || !FRV |
diff --git a/kernel/Makefile b/kernel/Makefile index 685697c0a181..0f15bd409367 100644 --- a/kernel/Makefile +++ b/kernel/Makefile | |||
@@ -9,7 +9,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \ | |||
9 | rcupdate.o extable.o params.o posix-timers.o \ | 9 | rcupdate.o extable.o params.o posix-timers.o \ |
10 | kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ | 10 | kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ |
11 | hrtimer.o rwsem.o nsproxy.o srcu.o \ | 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 | obj-$(CONFIG_SYSCTL) += sysctl_check.o | 14 | obj-$(CONFIG_SYSCTL) += sysctl_check.o |
15 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | 15 | obj-$(CONFIG_STACKTRACE) += stacktrace.o |
@@ -33,6 +33,7 @@ obj-$(CONFIG_PROVE_LOCKING) += spinlock.o | |||
33 | obj-$(CONFIG_UID16) += uid16.o | 33 | obj-$(CONFIG_UID16) += uid16.o |
34 | obj-$(CONFIG_MODULES) += module.o | 34 | obj-$(CONFIG_MODULES) += module.o |
35 | obj-$(CONFIG_KALLSYMS) += kallsyms.o | 35 | obj-$(CONFIG_KALLSYMS) += kallsyms.o |
36 | obj-$(CONFIG_UTS_NS) += utsname.o | ||
36 | obj-$(CONFIG_PM) += power/ | 37 | obj-$(CONFIG_PM) += power/ |
37 | obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o | 38 | obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o |
38 | obj-$(CONFIG_KEXEC) += kexec.o | 39 | obj-$(CONFIG_KEXEC) += kexec.o |