putname(symname); 
__putname(symname); 
v9fs_vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev){	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);	char *symname = __getname();	dprintk(DEBUG_VFS, " %lu,%s mode: %x MAJOR: %u MINOR: %u\n", dir->i_ino,		dentry->d_name.name, mode, MAJOR(rdev), MINOR(rdev));	if (!mistat)		return -ENOMEM;	if (!new_valid_dev(rdev)) {		retval = -EINVAL;		goto FreeMem;	}	if (!v9ses->extended) {		dprintk(DEBUG_ERROR, "not extended\n");		goto FreeMem;	}	/* issue a create */	retval = v9fs_create(dir, dentry, mode, 0);	if (retval != 0)		goto FreeMem;	newfid = v9fs_fid_lookup(dentry);	if (!newfid) {		dprintk(DEBUG_ERROR, "coudn't resove fid from dentry\n");		retval = -EINVAL;		goto FreeMem;	}	/* build extension */	if (S_ISBLK(mode))		sprintf(symname, "b %u %u", MAJOR(rdev), MINOR(rdev));	else if (S_ISCHR(mode))		sprintf(symname, "c %u %u", MAJOR(rdev), MINOR(rdev));	else if (S_ISFIFO(mode))		;	/* DO NOTHING */	else {		retval = -EINVAL;		goto FreeMem;	}	if (!S_ISFIFO(mode)) {		/* 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 FreeMem;		}	}	/* need to update dcache so we show up */	kfree(fcall);	if (v9fs_t_clunk(v9ses, newfid->fid, &fcall)) {		dprintk(DEBUG_ERROR, "clunk for symlink failed: %s\n",			FCALL_ERROR(fcall));		goto FreeMem;	}	d_drop(dentry);		/* FID - will this also clunk? */      FreeMem:	kfree(mistat);	kfree(fcall);	putname(symname);	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ce44eeb6906cf2b093b76ea69b952621712a4a3c/vfs_inode.c/clean/fs/9p/vfs_inode.c