diff options
Diffstat (limited to 'ipc/namespace.c')
-rw-r--r-- | ipc/namespace.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ipc/namespace.c b/ipc/namespace.c index f7a35be2e771..9171d948751e 100644 --- a/ipc/namespace.c +++ b/ipc/namespace.c | |||
@@ -26,6 +26,12 @@ static struct ipc_namespace *clone_ipc_ns(struct ipc_namespace *old_ns) | |||
26 | msg_init_ns(ns); | 26 | msg_init_ns(ns); |
27 | shm_init_ns(ns); | 27 | shm_init_ns(ns); |
28 | 28 | ||
29 | /* | ||
30 | * msgmni has already been computed for the new ipc ns. | ||
31 | * Thus, do the ipcns creation notification before registering that | ||
32 | * new ipcns in the chain. | ||
33 | */ | ||
34 | ipcns_notify(IPCNS_CREATED); | ||
29 | register_ipcns_notifier(ns); | 35 | register_ipcns_notifier(ns); |
30 | 36 | ||
31 | kref_init(&ns->kref); | 37 | kref_init(&ns->kref); |
@@ -97,4 +103,10 @@ void free_ipc_ns(struct kref *kref) | |||
97 | shm_exit_ns(ns); | 103 | shm_exit_ns(ns); |
98 | kfree(ns); | 104 | kfree(ns); |
99 | atomic_dec(&nr_ipc_ns); | 105 | atomic_dec(&nr_ipc_ns); |
106 | |||
107 | /* | ||
108 | * Do the ipcns removal notification after decrementing nr_ipc_ns in | ||
109 | * order to have a correct value when recomputing msgmni. | ||
110 | */ | ||
111 | ipcns_notify(IPCNS_REMOVED); | ||
100 | } | 112 | } |