diff options
| author | Al Viro <[email protected]> | 2009-03-30 11:20:30 +0000 |
|---|---|---|
| committer | Al Viro <[email protected]> | 2009-04-01 03:00:26 +0000 |
| commit | 498052bba55ecaff58db6a1436b0e25bfd75a7ff (patch) | |
| tree | bd3644ac60737e3733995a203acebd70cfd1b21b /net/unix/af_unix.c | |
| parent | Take fs_struct handling to new file (fs/fs_struct.c) (diff) | |
| download | kernel-498052bba55ecaff58db6a1436b0e25bfd75a7ff.tar.gz kernel-498052bba55ecaff58db6a1436b0e25bfd75a7ff.zip | |
New locking/refcounting for fs_struct
* all changes of current->fs are done under task_lock and write_lock of
old fs->lock
* refcount is not atomic anymore (same protection)
* its decrements are done when removing reference from current; at the
same time we decide whether to free it.
* put_fs_struct() is gone
* new field - ->in_exec. Set by check_unsafe_exec() if we are trying to do
execve() and only subthreads share fs_struct. Cleared when finishing exec
(success and failure alike). Makes CLONE_FS fail with -EAGAIN if set.
* check_unsafe_exec() may fail with -EAGAIN if another execve() from subthread
is in progress.
Signed-off-by: Al Viro <[email protected]>
Diffstat (limited to 'net/unix/af_unix.c')
0 files changed, 0 insertions, 0 deletions
