autofs4: make freeing sbi rcu-delayed
makes ->d_managed() safety in RCU mode independent from vfsmount_lock Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
2d1d9b5b5c
commit
baa40671d3
|
@ -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)
|
||||||
* 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;
|
|
||||||
|
|
||||||
/* Free wait queues, close pipe */
|
|
||||||
autofs4_catatonic_mode(sbi);
|
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)
|
||||||
|
|
Loading…
Reference in New Issue