v9fs_fid_lookup(old_dentry->d_parent, FID_WALK); 
v9fs_fid_lookup(old_dentry->d_parent); 
v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,		struct inode *new_dir, struct dentry *new_dentry){	struct inode *old_inode = old_dentry->d_inode;	struct v9fs_session_info *v9ses = v9fs_inode2v9ses(old_inode);	struct v9fs_fid *oldfid = v9fs_fid_lookup(old_dentry, FID_WALK);	struct v9fs_fid *olddirfid =	    v9fs_fid_lookup(old_dentry->d_parent, FID_WALK);	struct v9fs_fid *newdirfid =	    v9fs_fid_lookup(new_dentry->d_parent, FID_WALK);	struct v9fs_stat *mistat = kmalloc(v9ses->maxdata, GFP_KERNEL);	struct v9fs_fcall *fcall = NULL;	int fid = -1;	int olddirfidnum = -1;	int newdirfidnum = -1;	int retval = 0;	dprintk(DEBUG_VFS, "\n");	if (!mistat)		return -ENOMEM;	if ((!oldfid) || (!olddirfid) || (!newdirfid)) {		dprintk(DEBUG_ERROR, "problem with arguments\n");		return -EBADF;	}	/* 9P can only handle file rename in the same directory */	if (memcmp(&olddirfid->qid, &newdirfid->qid, sizeof(newdirfid->qid))) {		dprintk(DEBUG_ERROR, "old dir and new dir are different\n");		retval = -EPERM;		goto FreeFcallnBail;	}	fid = oldfid->fid;	olddirfidnum = olddirfid->fid;	newdirfidnum = newdirfid->fid;	if (fid < 0) {		dprintk(DEBUG_ERROR, "no fid for old file #%lu\n",			old_inode->i_ino);		retval = -EBADF;		goto FreeFcallnBail;	}	v9fs_blank_mistat(v9ses, mistat);	strcpy(mistat->data + 1, v9ses->name);	mistat->name = mistat->data + 1 + strlen(v9ses->name);	if (new_dentry->d_name.len >	    (v9ses->maxdata - strlen(v9ses->name) - sizeof(struct v9fs_stat))) {		dprintk(DEBUG_ERROR, "new name too long\n");		goto FreeFcallnBail;	}	strcpy(mistat->name, new_dentry->d_name.name);	retval = v9fs_t_wstat(v9ses, fid, mistat, &fcall);      FreeFcallnBail:	kfree(mistat);	if (retval < 0)		dprintk(DEBUG_ERROR, "v9fs_t_wstat error: %s\n",			FCALL_ERROR(fcall));	kfree(fcall);	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0b8dd17762194ec77066d339e0b2866b0c66b715/vfs_inode.c/buggy/fs/9p/vfs_inode.c