diff -NurpP --minimal linux-2.6.26.2-vs2.3.0.35-pre5/kernel/user.c linux-2.6.26.2-vs2.3.0.35/kernel/user.c
--- linux-2.6.26.2-vs2.3.0.35-pre5/kernel/user.c	2008-07-16 22:41:36.000000000 -0400
+++ linux-2.6.26.2-vs2.3.0.35/kernel/user.c	2008-08-13 20:16:50.000000000 -0400
@@ -246,12 +246,14 @@ static struct kobj_type uids_ktype = {
 static int uids_user_create(struct user_namespace *ns, struct user_struct *up)
 {
 	struct kobject *kobj = &up->kobj;
-	int error;
+	int error = 0;
 
 	memset(kobj, 0, sizeof(struct kobject));
+	if (ns != &init_user_ns)
+		goto done;
+
 	kobj->kset = uids_kset;
-	error = kobject_init_and_add(kobj, &uids_ktype, NULL,
-		"%p:%d", ns, up->uid);
+	error = kobject_init_and_add(kobj, &uids_ktype, NULL, "%d", up->uid);
 	if (error) {
 		kobject_put(kobj);
 		goto done;
@@ -303,9 +305,11 @@ static void remove_user_sysfs_dir(struct
 	if (!remove_user)
 		goto done;
 
-	kobject_uevent(&up->kobj, KOBJ_REMOVE);
-	kobject_del(&up->kobj);
-	kobject_put(&up->kobj);
+	if (up->kobj.name) {
+		kobject_uevent(&up->kobj, KOBJ_REMOVE);
+		kobject_del(&up->kobj);
+		kobject_put(&up->kobj);
+	}
 
 	sched_destroy_user(up);
 	key_put(up->uid_keyring);
