Re: [PATCH 1/2] userns: remove dead key_put() on the create_user_ns() error path
From: Jan Kara
Date: Fri Aug 28 2026 - 05:42:29 EST
On Fri 28-08-26 17:16:58, Tao Cui wrote:
> From: Tao Cui <cuitao@xxxxxxxxxx>
>
> create_user_ns() jumps to fail_keyring when setup_userns_sysctls()
> fails. At that point ns was freshly allocated with
> kmem_cache_zalloc() and ns->persistent_keyring_register is only ever
> assigned later, lazily, from key_get_persistent()
> (security/keys/persistent.c). The key_put() therefore always
> receives NULL.
>
> Remove the dead call.
>
> Signed-off-by: Tao Cui <cuitao@xxxxxxxxxx>
Adding Eric to CC for verification but yes, that code seems to be dead
since its introduction by Eric 10 years ago. Feel free to add:
Reviewed-by: Jan Kara <jack@xxxxxxx>
Honza
> ---
> kernel/user_namespace.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
> index 0bed462e9b2a..e9e04ce167df 100644
> --- a/kernel/user_namespace.c
> +++ b/kernel/user_namespace.c
> @@ -162,9 +162,6 @@ int create_user_ns(struct cred *new)
> ns_tree_add(ns);
> return 0;
> fail_keyring:
> -#ifdef CONFIG_PERSISTENT_KEYRINGS
> - key_put(ns->persistent_keyring_register);
> -#endif
> ns_common_free(ns);
> fail_free:
> kmem_cache_free(user_ns_cachep, ns);
> --
> 2.43.0
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR