spin_lock(&vfsmount_lock); if (IS_ROOT(nd->dentry) || !d_unhashed(nd->dentry)) { struct list_head head;  attach_mnt(mnt, nd); list_add_tail(&head, &mnt->mnt_list); list_splice(&head, current->namespace->list.prev); err = 0; touch_namespace(current->namespace); } spin_unlock(&vfsmount_lock); 
if (IS_ROOT(nd->dentry) || !d_unhashed(nd->dentry)) err = attach_recursive_mnt(mnt, nd); 
static int graft_tree(struct vfsmount *mnt, struct nameidata *nd){	int err;	if (mnt->mnt_sb->s_flags & MS_NOUSER)		return -EINVAL;	if (S_ISDIR(nd->dentry->d_inode->i_mode) !=	      S_ISDIR(mnt->mnt_root->d_inode->i_mode))		return -ENOTDIR;	err = -ENOENT;	down(&nd->dentry->d_inode->i_sem);	if (IS_DEADDIR(nd->dentry->d_inode))		goto out_unlock;	err = security_sb_check_sb(mnt, nd);	if (err)		goto out_unlock;	err = -ENOENT;	spin_lock(&vfsmount_lock);	if (IS_ROOT(nd->dentry) || !d_unhashed(nd->dentry)) {		struct list_head head;		attach_mnt(mnt, nd);		list_add_tail(&head, &mnt->mnt_list);		list_splice(&head, current->namespace->list.prev);		err = 0;		touch_namespace(current->namespace);	}	spin_unlock(&vfsmount_lock);out_unlock:	up(&nd->dentry->d_inode->i_sem);	if (!err)		security_sb_post_addmount(mnt, nd);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b90fa9ae8f51f098ee480bbaabd6867992e9fc58/namespace.c/clean/fs/namespace.c