Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ef9e11d authored by Hillf Danton's avatar Hillf Danton Committed by Linus Torvalds
Browse files

fix freeing user_struct in user cache



When racing on adding into user cache, the new allocated from mm slab
is freed without putting user namespace.

Since the user namespace is already operated by getting, putting has
to be issued.

Signed-off-by: default avatarHillf Danton <dhillf@gmail.com>
Acked-by: default avatarSerge Hallyn <serge@hallyn.com>
Cc: stable@kernel.org
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 387c31c7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -158,6 +158,7 @@ struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
		spin_lock_irq(&uidhash_lock);
		spin_lock_irq(&uidhash_lock);
		up = uid_hash_find(uid, hashent);
		up = uid_hash_find(uid, hashent);
		if (up) {
		if (up) {
			put_user_ns(ns);
			key_put(new->uid_keyring);
			key_put(new->uid_keyring);
			key_put(new->session_keyring);
			key_put(new->session_keyring);
			kmem_cache_free(uid_cachep, new);
			kmem_cache_free(uid_cachep, new);