Skip to content

Commit

Permalink
remove CONFIG_UTS_NS and CONFIG_IPC_NS
Browse files Browse the repository at this point in the history
CONFIG_UTS_NS and CONFIG_IPC_NS have very little value as they only
deactivate the unshare of the uts and ipc namespaces and do not improve
performance.

Signed-off-by: Cedric Le Goater <[email protected]>
Acked-by: "Serge E. Hallyn" <[email protected]>
Cc: Eric W. Biederman <[email protected]>
Cc: Herbert Poetzl <[email protected]>
Cc: Pavel Emelianov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Cedric Le Goater authored and Linus Torvalds committed Jul 16, 2007
1 parent 522ed77 commit 7d69a1f
Show file tree
Hide file tree
Showing 11 changed files with 12 additions and 79 deletions.
11 changes: 3 additions & 8 deletions include/linux/ipc.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ extern struct ipc_namespace init_ipc_ns;

#ifdef CONFIG_SYSVIPC
#define INIT_IPC_NS(ns) .ns = &init_ipc_ns,
extern void free_ipc_ns(struct kref *kref);
extern struct ipc_namespace *copy_ipcs(unsigned long flags,
struct ipc_namespace *ns);
#else
Expand All @@ -104,13 +105,9 @@ static inline struct ipc_namespace *copy_ipcs(unsigned long flags,
}
#endif

#ifdef CONFIG_IPC_NS
extern void free_ipc_ns(struct kref *kref);
#endif

static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)
{
#ifdef CONFIG_IPC_NS
#ifdef CONFIG_SYSVIPC
if (ns)
kref_get(&ns->kref);
#endif
Expand All @@ -119,13 +116,11 @@ static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)

static inline void put_ipc_ns(struct ipc_namespace *ns)
{
#ifdef CONFIG_IPC_NS
#ifdef CONFIG_SYSVIPC
kref_put(&ns->kref, free_ipc_ns);
#endif
}

#endif /* __KERNEL__ */

#endif /* _LINUX_IPC_H */


13 changes: 0 additions & 13 deletions include/linux/utsname.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,26 +48,13 @@ static inline void get_uts_ns(struct uts_namespace *ns)
kref_get(&ns->kref);
}

#ifdef CONFIG_UTS_NS
extern struct uts_namespace *copy_utsname(int flags, struct uts_namespace *ns);
extern void free_uts_ns(struct kref *kref);

static inline void put_uts_ns(struct uts_namespace *ns)
{
kref_put(&ns->kref, free_uts_ns);
}
#else
static inline struct uts_namespace *copy_utsname(int flags,
struct uts_namespace *ns)
{
return ns;
}

static inline void put_uts_ns(struct uts_namespace *ns)
{
}
#endif

static inline struct new_utsname *utsname(void)
{
return &current->nsproxy->uts_ns->name;
Expand Down
17 changes: 0 additions & 17 deletions init/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,6 @@ config SYSVIPC
section 6.4 of the Linux Programmer's Guide, available from
<http://www.tldp.org/guides.html>.

config IPC_NS
bool "IPC Namespaces"
depends on SYSVIPC
default n
help
Support ipc namespaces. This allows containers, i.e. virtual
environments, to use ipc namespaces to provide different ipc
objects for different servers. If unsure, say N.

config SYSVIPC_SYSCTL
bool
depends on SYSVIPC
Expand Down Expand Up @@ -218,14 +209,6 @@ config TASK_IO_ACCOUNTING

Say N if unsure.

config UTS_NS
bool "UTS Namespaces"
default n
help
Support uts namespaces. This allows containers, i.e.
vservers, to use uts namespaces to provide different
uts info for different servers. If unsure, say N.

config AUDIT
bool "Auditing support"
depends on NET
Expand Down
4 changes: 1 addition & 3 deletions ipc/msg.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ static int newque (struct ipc_namespace *ns, key_t key, int msgflg);
static int sysvipc_msg_proc_show(struct seq_file *s, void *it);
#endif

static void __ipc_init __msg_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
static void __msg_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
{
ns->ids[IPC_MSG_IDS] = ids;
ns->msg_ctlmax = MSGMAX;
Expand All @@ -96,7 +96,6 @@ static void __ipc_init __msg_init_ns(struct ipc_namespace *ns, struct ipc_ids *i
ipc_init_ids(ids, ns->msg_ctlmni);
}

#ifdef CONFIG_IPC_NS
int msg_init_ns(struct ipc_namespace *ns)
{
struct ipc_ids *ids;
Expand Down Expand Up @@ -128,7 +127,6 @@ void msg_exit_ns(struct ipc_namespace *ns)
kfree(ns->ids[IPC_MSG_IDS]);
ns->ids[IPC_MSG_IDS] = NULL;
}
#endif

void __init msg_init(void)
{
Expand Down
4 changes: 1 addition & 3 deletions ipc/sem.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ static int sysvipc_sem_proc_show(struct seq_file *s, void *it);
#define sc_semopm sem_ctls[2]
#define sc_semmni sem_ctls[3]

static void __ipc_init __sem_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
static void __sem_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
{
ns->ids[IPC_SEM_IDS] = ids;
ns->sc_semmsl = SEMMSL;
Expand All @@ -132,7 +132,6 @@ static void __ipc_init __sem_init_ns(struct ipc_namespace *ns, struct ipc_ids *i
ipc_init_ids(ids, ns->sc_semmni);
}

#ifdef CONFIG_IPC_NS
int sem_init_ns(struct ipc_namespace *ns)
{
struct ipc_ids *ids;
Expand Down Expand Up @@ -164,7 +163,6 @@ void sem_exit_ns(struct ipc_namespace *ns)
kfree(ns->ids[IPC_SEM_IDS]);
ns->ids[IPC_SEM_IDS] = NULL;
}
#endif

void __init sem_init (void)
{
Expand Down
4 changes: 1 addition & 3 deletions ipc/shm.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ static void shm_destroy (struct ipc_namespace *ns, struct shmid_kernel *shp);
static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
#endif

static void __ipc_init __shm_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
static void __shm_init_ns(struct ipc_namespace *ns, struct ipc_ids *ids)
{
ns->ids[IPC_SHM_IDS] = ids;
ns->shm_ctlmax = SHMMAX;
Expand All @@ -98,7 +98,6 @@ static void do_shm_rmid(struct ipc_namespace *ns, struct shmid_kernel *shp)
shm_destroy(ns, shp);
}

#ifdef CONFIG_IPC_NS
int shm_init_ns(struct ipc_namespace *ns)
{
struct ipc_ids *ids;
Expand Down Expand Up @@ -130,7 +129,6 @@ void shm_exit_ns(struct ipc_namespace *ns)
kfree(ns->ids[IPC_SHM_IDS]);
ns->ids[IPC_SHM_IDS] = NULL;
}
#endif

void __init shm_init (void)
{
Expand Down
11 changes: 1 addition & 10 deletions ipc/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ struct ipc_namespace init_ipc_ns = {
},
};

#ifdef CONFIG_IPC_NS
static struct ipc_namespace *clone_ipc_ns(struct ipc_namespace *old_ns)
{
int err;
Expand Down Expand Up @@ -110,14 +109,6 @@ void free_ipc_ns(struct kref *kref)
shm_exit_ns(ns);
kfree(ns);
}
#else
struct ipc_namespace *copy_ipcs(unsigned long flags, struct ipc_namespace *ns)
{
if (flags & CLONE_NEWIPC)
return ERR_PTR(-EINVAL);
return ns;
}
#endif

/**
* ipc_init - initialise IPC subsystem
Expand Down Expand Up @@ -145,7 +136,7 @@ __initcall(ipc_init);
* array itself.
*/

void __ipc_init ipc_init_ids(struct ipc_ids* ids, int size)
void ipc_init_ids(struct ipc_ids* ids, int size)
{
int i;

Expand Down
8 changes: 2 additions & 6 deletions ipc/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,8 @@ struct ipc_ids {
};

struct seq_file;
#ifdef CONFIG_IPC_NS
#define __ipc_init
#else
#define __ipc_init __init
#endif
void __ipc_init ipc_init_ids(struct ipc_ids *ids, int size);

void ipc_init_ids(struct ipc_ids *ids, int size);
#ifdef CONFIG_PROC_FS
void __init ipc_init_proc_interface(const char *path, const char *header,
int ids, int (*show)(struct seq_file *, void *));
Expand Down
4 changes: 2 additions & 2 deletions kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \
signal.o sys.o kmod.o workqueue.o pid.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 \
hrtimer.o rwsem.o latency.o nsproxy.o srcu.o die_notifier.o
hrtimer.o rwsem.o latency.o nsproxy.o srcu.o die_notifier.o \
utsname.o

obj-$(CONFIG_STACKTRACE) += stacktrace.o
obj-y += time/
Expand Down Expand Up @@ -48,7 +49,6 @@ obj-$(CONFIG_SECCOMP) += seccomp.o
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
obj-$(CONFIG_RELAY) += relay.o
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
obj-$(CONFIG_UTS_NS) += utsname.o
obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o

Expand Down
10 changes: 0 additions & 10 deletions kernel/nsproxy.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,16 +155,6 @@ int unshare_nsproxy_namespaces(unsigned long unshare_flags,
if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC)))
return 0;

#ifndef CONFIG_IPC_NS
if (unshare_flags & CLONE_NEWIPC)
return -EINVAL;
#endif

#ifndef CONFIG_UTS_NS
if (unshare_flags & CLONE_NEWUTS)
return -EINVAL;
#endif

if (!capable(CAP_SYS_ADMIN))
return -EPERM;

Expand Down
5 changes: 1 addition & 4 deletions kernel/utsname_sysctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@
static void *get_uts(ctl_table *table, int write)
{
char *which = table->data;
#ifdef CONFIG_UTS_NS
struct uts_namespace *uts_ns = current->nsproxy->uts_ns;
which = (which - (char *)&init_uts_ns) + (char *)uts_ns;
#endif

if (!write)
down_read(&uts_sem);
else
Expand Down

0 comments on commit 7d69a1f

Please sign in to comment.