[PATCH] fix freeing user_struct in user cache

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Hillf Danton
Date: Thursday, December 23, 2010 - 5:52 am

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.

btw, it could be freed out of lock?

Signed-off-by: Hillf Danton <dhillf@gmail.com>
---

--- a/kernel/user.c	2010-11-01 19:54:12.000000000 +0800
+++ b/kernel/user.c	2010-12-23 20:42:00.000000000 +0800
@@ -158,6 +158,7 @@ struct user_struct *alloc_uid(struct use
 		spin_lock_irq(&uidhash_lock);
 		up = uid_hash_find(uid, hashent);
 		if (up) {
+			put_user_ns(ns);
 			key_put(new->uid_keyring);
 			key_put(new->session_keyring);
 			kmem_cache_free(uid_cachep, new);
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] fix freeing user_struct in user cache, Hillf Danton, (Thu Dec 23, 5:52 am)
Re: [PATCH] fix freeing user_struct in user cache, Hillf Danton, (Fri Dec 24, 7:24 am)
Re: [PATCH] fix freeing user_struct in user cache, Greg KH, (Fri Dec 24, 10:14 am)
Re: [PATCH] fix freeing user_struct in user cache, Serge E. Hallyn, (Fri Dec 24, 4:56 pm)
Re: [PATCH] fix freeing user_struct in user cache, Hillf Danton, (Sat Dec 25, 6:56 am)
[PATCH] fix freeing user_struct in user cache, Hillf Danton, (Wed Dec 29, 6:55 am)
Re: [PATCH] fix freeing user_struct in user cache, Serge E. Hallyn, (Fri Dec 31, 7:25 am)