Kill unsharing fs_struct in __set_personality()
That's a rudiment of altroot support. I.e. it should've been buried a long time ago. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
15f7176eb1
Коммит
11d06b2a1e
|
@ -145,28 +145,6 @@ __set_personality(u_long personality)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atomic_read(¤t->fs->count) != 1) {
|
|
||||||
struct fs_struct *fsp, *ofsp;
|
|
||||||
|
|
||||||
fsp = copy_fs_struct(current->fs);
|
|
||||||
if (fsp == NULL) {
|
|
||||||
module_put(ep->module);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
task_lock(current);
|
|
||||||
ofsp = current->fs;
|
|
||||||
current->fs = fsp;
|
|
||||||
task_unlock(current);
|
|
||||||
|
|
||||||
put_fs_struct(ofsp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* At that point we are guaranteed to be the sole owner of
|
|
||||||
* current->fs.
|
|
||||||
*/
|
|
||||||
|
|
||||||
current->personality = personality;
|
current->personality = personality;
|
||||||
oep = current_thread_info()->exec_domain;
|
oep = current_thread_info()->exec_domain;
|
||||||
current_thread_info()->exec_domain = ep;
|
current_thread_info()->exec_domain = ep;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче