static struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, 
struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, 
static struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry,					int flag){	struct vfsmount *res, *p, *q, *r, *s;	struct nameidata nd;	res = q = clone_mnt(mnt, dentry, flag);	if (!q)		goto Enomem;	q->mnt_mountpoint = mnt->mnt_mountpoint;	p = mnt;	list_for_each_entry(r, &mnt->mnt_mounts, mnt_child) {		if (!lives_below_in_same_fs(r->mnt_mountpoint, dentry))			continue;		for (s = r; s; s = next_mnt(s, r)) {			while (p != s->mnt_parent) {				p = p->mnt_parent;				q = q->mnt_parent;			}			p = s;			nd.mnt = q;			nd.dentry = p->mnt_mountpoint;			q = clone_mnt(p, p->mnt_root, flag);			if (!q)				goto Enomem;			spin_lock(&vfsmount_lock);			list_add_tail(&q->mnt_list, &res->mnt_list);			attach_mnt(q, &nd);			spin_unlock(&vfsmount_lock);		}	}	return res;Enomem:	if (res) {		LIST_HEAD(umount_list);		spin_lock(&vfsmount_lock);		umount_tree(res, &umount_list);		spin_unlock(&vfsmount_lock);		release_mounts(&umount_list);	}	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b90fa9ae8f51f098ee480bbaabd6867992e9fc58/namespace.c/clean/fs/namespace.c