if (mnt) { /* stop bind mounts from expiring */ 
err = -ENOMEM; if (recurse) mnt = copy_tree(old_nd.mnt, old_nd.dentry); else mnt = clone_mnt(old_nd.mnt, old_nd.dentry);  if (!mnt) goto out;  /* stop bind mounts from expiring */ spin_lock(&vfsmount_lock); list_del_init(&mnt->mnt_expire); spin_unlock(&vfsmount_lock);  err = graft_tree(mnt, nd); if (err) { 
static int do_loopback(struct nameidata *nd, char *old_name, int recurse){	struct nameidata old_nd;	struct vfsmount *mnt = NULL;	int err = mount_is_safe(nd);	if (err)		return err;	if (!old_name || !*old_name)		return -EINVAL;	err = path_lookup(old_name, LOOKUP_FOLLOW, &old_nd);	if (err)		return err;	down_write(&current->namespace->sem);	err = -EINVAL;	if (check_mnt(nd->mnt) && (!recurse || check_mnt(old_nd.mnt))) {		err = -ENOMEM;		if (recurse)			mnt = copy_tree(old_nd.mnt, old_nd.dentry);		else			mnt = clone_mnt(old_nd.mnt, old_nd.dentry);	}	if (mnt) {		/* stop bind mounts from expiring */		spin_lock(&vfsmount_lock);		list_del_init(&mnt->mnt_expire);		spin_unlock(&vfsmount_lock);		err = graft_tree(mnt, nd);		if (err) {			spin_lock(&vfsmount_lock);			umount_tree(mnt);			spin_unlock(&vfsmount_lock);		} else			mntput(mnt);	}	up_write(&current->namespace->sem);	path_release(&old_nd);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ccd48bc7fac284caf704dcdcafd223a24f70bccf/namespace.c/buggy/fs/namespace.c