]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - kernel/user_namespace.c
CRED: Inaugurate COW credentials
[net-next-2.6.git] / kernel / user_namespace.c
index f82730adea007104087663a505f8a9f40e6d9ee5..0d9c51d67333f7a445afb8b936520a3bcd25dc33 100644 (file)
@@ -19,6 +19,7 @@ static struct user_namespace *clone_user_ns(struct user_namespace *old_ns)
 {
        struct user_namespace *ns;
        struct user_struct *new_user;
+       struct cred *new;
        int n;
 
        ns = kmalloc(sizeof(struct user_namespace), GFP_KERNEL);
@@ -45,7 +46,16 @@ static struct user_namespace *clone_user_ns(struct user_namespace *old_ns)
                return ERR_PTR(-ENOMEM);
        }
 
-       switch_uid(new_user);
+       /* Install the new user */
+       new = prepare_creds();
+       if (!new) {
+               free_uid(new_user);
+               free_uid(ns->root_user);
+               kfree(ns);
+       }
+       free_uid(new->user);
+       new->user = new_user;
+       commit_creds(new);
        return ns;
 }