cred: Refcount the user_ns pointed to by the cred.

struct user_struct will shortly loose it's user_ns reference
so make the cred user_ns reference a proper reference complete
with reference counting.

Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
Eric W. Biederman 2011-11-16 21:52:53 -08:00
parent c4a4d60379
commit 0093ccb68f
4 changed files with 10 additions and 10 deletions

View file

@ -24,7 +24,7 @@ static struct kmem_cache *user_ns_cachep __read_mostly;
*/
int create_user_ns(struct cred *new)
{
struct user_namespace *ns;
struct user_namespace *ns, *parent_ns = new->user_ns;
struct user_struct *root_user;
int n;
@ -57,8 +57,10 @@ int create_user_ns(struct cred *new)
#endif
/* tgcred will be cleared in our caller bc CLONE_THREAD won't be set */
/* root_user holds a reference to ns, our reference can be dropped */
put_user_ns(ns);
/* Leave the reference to our user_ns with the new cred */
new->user_ns = ns;
put_user_ns(parent_ns);
return 0;
}