The first patch introduces a nsproxy (name taken from Andi Kleen's
suggestion) structure intended to encompass all per-process namespaces.
The second moves the fs namespace structure from the task-struct
into nsproxy. The rest of the patches are mostly repeats of the utsname
patchset, except that they put the uts_ns structure into nsproxy
instead of the task_struct, and the exit_utsname is moved to mirror
exit_namespace (and exit_nsproxy) location.
Locking:
Currently i'm not doing any locking. Any time the nsproxy->namespace is
unshare()d, nsproxy is first cloned. So by definition the nsproxy
usage count is 1, and the task is locked. So the current scheme of
locking task_struct when reading tsk->nsproxy->namespace should be ok.
-serge