Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit baa40671 authored by Al Viro's avatar Al Viro
Browse files

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
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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)
+4 −9
Original line number Original line Diff line number Diff line
@@ -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)