newfid = v9fs_fid_lookup(dentry, FID_OP); 
newfid = v9fs_fid_lookup(dentry); 
v9fs_vfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname){	int retval = -EPERM;	struct v9fs_fid *newfid;	struct v9fs_session_info *v9ses = v9fs_inode2v9ses(dir);	struct v9fs_fcall *fcall = NULL;	struct v9fs_stat *mistat = kmalloc(v9ses->maxdata, GFP_KERNEL);	dprintk(DEBUG_VFS, " %lu,%s,%s\n", dir->i_ino, dentry->d_name.name,		symname);	if (!mistat)		return -ENOMEM;	if (!v9ses->extended) {		dprintk(DEBUG_ERROR, "not extended\n");		goto FreeFcall;	}	/* issue a create */	retval = v9fs_create(dir, dentry, S_IFLNK, 0);	if (retval != 0)		goto FreeFcall;	newfid = v9fs_fid_lookup(dentry, FID_OP);	/* issue a twstat */	v9fs_blank_mistat(v9ses, mistat);	strcpy(mistat->data + 1, symname);	mistat->extension = mistat->data + 1;	retval = v9fs_t_wstat(v9ses, newfid->fid, mistat, &fcall);	if (retval < 0) {		dprintk(DEBUG_ERROR, "v9fs_t_wstat error: %s\n",			FCALL_ERROR(fcall));		goto FreeFcall;	}	kfree(fcall);	if (v9fs_t_clunk(v9ses, newfid->fid, &fcall)) {		dprintk(DEBUG_ERROR, "clunk for symlink failed: %s\n",			FCALL_ERROR(fcall));		goto FreeFcall;	}	d_drop(dentry);		/* FID - will this also clunk? */      FreeFcall:	kfree(mistat);	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