Commit 864bdb3b authored by Al Viro's avatar Al Viro

new helper: daemonize_descriptors()

descriptor-related parts of daemonize, done right.  As the
result we simplify the locking rules for ->files - we
hold task_lock in *all* cases when we modify ->files.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2be7fd55
...@@ -519,6 +519,12 @@ struct files_struct init_files = { ...@@ -519,6 +519,12 @@ struct files_struct init_files = {
.file_lock = __SPIN_LOCK_UNLOCKED(init_task.file_lock), .file_lock = __SPIN_LOCK_UNLOCKED(init_task.file_lock),
}; };
void daemonize_descriptors(void)
{
atomic_inc(&init_files.count);
reset_files_struct(&init_files);
}
/* /*
* allocate a file descriptor, mark it busy. * allocate a file descriptor, mark it busy.
*/ */
......
...@@ -95,6 +95,7 @@ struct task_struct; ...@@ -95,6 +95,7 @@ struct task_struct;
struct files_struct *get_files_struct(struct task_struct *); struct files_struct *get_files_struct(struct task_struct *);
void put_files_struct(struct files_struct *fs); void put_files_struct(struct files_struct *fs);
void reset_files_struct(struct files_struct *); void reset_files_struct(struct files_struct *);
void daemonize_descriptors(void);
int unshare_files(struct files_struct **); int unshare_files(struct files_struct **);
struct files_struct *dup_fd(struct files_struct *, int *); struct files_struct *dup_fd(struct files_struct *, int *);
void do_close_on_exec(struct files_struct *); void do_close_on_exec(struct files_struct *);
......
...@@ -457,9 +457,7 @@ void daemonize(const char *name, ...) ...@@ -457,9 +457,7 @@ void daemonize(const char *name, ...)
/* Become as one with the init task */ /* Become as one with the init task */
daemonize_fs_struct(); daemonize_fs_struct();
exit_files(current); daemonize_descriptors();
current->files = init_task.files;
atomic_inc(&current->files->count);
reparent_to_kthreadd(); reparent_to_kthreadd();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment