int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, dev_t device_number) {	int rc = -EPERM;	int xid;	struct cifs_sb_info *cifs_sb;	struct cifsTconInfo *pTcon;	char *full_path = NULL;	struct inode * newinode = NULL;	if (!old_valid_dev(device_number))		return -EINVAL;	xid = GetXid();	cifs_sb = CIFS_SB(inode->i_sb);	pTcon = cifs_sb->tcon;	down(&direntry->d_sb->s_vfs_rename_sem);	full_path = build_path_from_dentry(direntry);	up(&direntry->d_sb->s_vfs_rename_sem);	if(full_path == NULL)		rc = -ENOMEM;		if (full_path && (pTcon->ses->capabilities & CAP_UNIX)) {		if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) {			rc = CIFSSMBUnixSetPerms(xid, pTcon, full_path,				mode,(__u64)current->euid,(__u64)current->egid,				device_number, cifs_sb->local_nls);		} else {			rc = CIFSSMBUnixSetPerms(xid, pTcon,				full_path, mode, (__u64)-1, (__u64)-1,				device_number, cifs_sb->local_nls);		}		if(!rc) {			rc = cifs_get_inode_info_unix(&newinode, full_path,						inode->i_sb,xid);			direntry->d_op = &cifs_dentry_ops;			if(rc == 0)				d_instantiate(direntry, newinode);		}	}	if (full_path)		kfree(full_path);	FreeXid(xid);	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d14537f103bf746ca766f739f9f5a5bf7a8b4806/dir.c/clean/fs/cifs/dir.c