diff options
Diffstat (limited to 'kernel/user_namespace.c')
-rw-r--r-- | kernel/user_namespace.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c index 923414a246e9..bda6e890ad88 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c | |||
@@ -133,6 +133,9 @@ int create_user_ns(struct cred *new) | |||
133 | ns->flags = parent_ns->flags; | 133 | ns->flags = parent_ns->flags; |
134 | mutex_unlock(&userns_state_mutex); | 134 | mutex_unlock(&userns_state_mutex); |
135 | 135 | ||
136 | #ifdef CONFIG_KEYS | ||
137 | INIT_LIST_HEAD(&ns->keyring_name_list); | ||
138 | #endif | ||
136 | #ifdef CONFIG_PERSISTENT_KEYRINGS | 139 | #ifdef CONFIG_PERSISTENT_KEYRINGS |
137 | init_rwsem(&ns->persistent_keyring_register_sem); | 140 | init_rwsem(&ns->persistent_keyring_register_sem); |
138 | #endif | 141 | #endif |
@@ -196,9 +199,7 @@ static void free_user_ns(struct work_struct *work) | |||
196 | kfree(ns->projid_map.reverse); | 199 | kfree(ns->projid_map.reverse); |
197 | } | 200 | } |
198 | retire_userns_sysctls(ns); | 201 | retire_userns_sysctls(ns); |
199 | #ifdef CONFIG_PERSISTENT_KEYRINGS | 202 | key_free_user_ns(ns); |
200 | key_put(ns->persistent_keyring_register); | ||
201 | #endif | ||
202 | ns_free_inum(&ns->ns); | 203 | ns_free_inum(&ns->ns); |
203 | kmem_cache_free(user_ns_cachep, ns); | 204 | kmem_cache_free(user_ns_cachep, ns); |
204 | dec_user_namespaces(ucounts); | 205 | dec_user_namespaces(ucounts); |