Commit baa40671 authored by Al Viro's avatar Al Viro

autofs4: make freeing sbi rcu-delayed

makes ->d_managed() safety in RCU mode independent from vfsmount_lock
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2d1d9b5b
...@@ -122,6 +122,7 @@ struct autofs_sb_info { ...@@ -122,6 +122,7 @@ struct autofs_sb_info {
spinlock_t lookup_lock; spinlock_t lookup_lock;
struct list_head active_list; struct list_head active_list;
struct list_head expiring_list; struct list_head expiring_list;
struct rcu_head rcu;
}; };
static inline struct autofs_sb_info *autofs4_sbi(struct super_block *sb) static inline struct autofs_sb_info *autofs4_sbi(struct super_block *sb)
......
...@@ -56,18 +56,13 @@ void autofs4_kill_sb(struct super_block *sb) ...@@ -56,18 +56,13 @@ void autofs4_kill_sb(struct super_block *sb)
* just call kill_anon_super when we are called from * just call kill_anon_super when we are called from
* deactivate_super. * deactivate_super.
*/ */
if (!sbi) if (sbi) /* Free wait queues, close pipe */
goto out_kill_sb; autofs4_catatonic_mode(sbi);
/* Free wait queues, close pipe */
autofs4_catatonic_mode(sbi);
sb->s_fs_info = NULL;
kfree(sbi);
out_kill_sb:
DPRINTK("shutting down"); DPRINTK("shutting down");
kill_litter_super(sb); kill_litter_super(sb);
if (sbi)
kfree_rcu(sbi, rcu);
} }
static int autofs4_show_options(struct seq_file *m, struct dentry *root) static int autofs4_show_options(struct seq_file *m, struct dentry *root)
......
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