diff options
Diffstat (limited to 'fs/pnode.c')
| -rw-r--r-- | fs/pnode.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/pnode.c b/fs/pnode.c index 3e000a51ac0..43617258fa6 100644 --- a/fs/pnode.c +++ b/fs/pnode.c @@ -217,7 +217,7 @@ static struct mount *get_source(struct mount *dest,   * @source_mnt: source mount.   * @tree_list : list of heads of trees to be attached.   */ -int propagate_mnt(struct mount *dest_mnt, struct dentry *dest_dentry, +int propagate_mnt(struct mount *dest_mnt, struct mountpoint *dest_mp,  		    struct mount *source_mnt, struct list_head *tree_list)  {  	struct mount *m, *child; @@ -225,7 +225,6 @@ int propagate_mnt(struct mount *dest_mnt, struct dentry *dest_dentry,  	struct mount *prev_dest_mnt = dest_mnt;  	struct mount *prev_src_mnt  = source_mnt;  	LIST_HEAD(tmp_list); -	LIST_HEAD(umount_list);  	for (m = propagation_next(dest_mnt, dest_mnt); m;  			m = propagation_next(m, dest_mnt)) { @@ -244,8 +243,8 @@ int propagate_mnt(struct mount *dest_mnt, struct dentry *dest_dentry,  			goto out;  		} -		if (is_subdir(dest_dentry, m->mnt.mnt_root)) { -			mnt_set_mountpoint(m, dest_dentry, child); +		if (is_subdir(dest_mp->m_dentry, m->mnt.mnt_root)) { +			mnt_set_mountpoint(m, dest_mp, child);  			list_add_tail(&child->mnt_hash, tree_list);  		} else {  			/* @@ -261,10 +260,9 @@ out:  	br_write_lock(&vfsmount_lock);  	while (!list_empty(&tmp_list)) {  		child = list_first_entry(&tmp_list, struct mount, mnt_hash); -		umount_tree(child, 0, &umount_list); +		umount_tree(child, 0);  	}  	br_write_unlock(&vfsmount_lock); -	release_mounts(&umount_list);  	return ret;  }  |