diff options
Diffstat (limited to 'kernel/user.c')
-rw-r--r-- | kernel/user.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/user.c b/kernel/user.c index 97202cb29adc..6c924bc48c08 100644 --- a/kernel/user.c +++ b/kernel/user.c | |||
@@ -246,6 +246,8 @@ static int uids_user_create(struct user_struct *up) | |||
246 | int error; | 246 | int error; |
247 | 247 | ||
248 | memset(kobj, 0, sizeof(struct kobject)); | 248 | memset(kobj, 0, sizeof(struct kobject)); |
249 | if (up->user_ns != &init_user_ns) | ||
250 | return 0; | ||
249 | kobj->kset = uids_kset; | 251 | kobj->kset = uids_kset; |
250 | error = kobject_init_and_add(kobj, &uids_ktype, NULL, "%d", up->uid); | 252 | error = kobject_init_and_add(kobj, &uids_ktype, NULL, "%d", up->uid); |
251 | if (error) { | 253 | if (error) { |
@@ -281,6 +283,8 @@ static void remove_user_sysfs_dir(struct work_struct *w) | |||
281 | unsigned long flags; | 283 | unsigned long flags; |
282 | int remove_user = 0; | 284 | int remove_user = 0; |
283 | 285 | ||
286 | if (up->user_ns != &init_user_ns) | ||
287 | return; | ||
284 | /* Make uid_hash_remove() + sysfs_remove_file() + kobject_del() | 288 | /* Make uid_hash_remove() + sysfs_remove_file() + kobject_del() |
285 | * atomic. | 289 | * atomic. |
286 | */ | 290 | */ |