cifsConvertToUCS((__u16 *) pSMB->FileName, fileName, 
cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, 
CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *tcon,		    char *fileName, __u64 mode, __u64 uid, __u64 gid, 		    dev_t device, const struct nls_table *nls_codepage, 		    int remap){	TRANSACTION2_SPI_REQ *pSMB = NULL;	TRANSACTION2_SPI_RSP *pSMBr = NULL;	int name_len;	int rc = 0;	int bytes_returned = 0;	FILE_UNIX_BASIC_INFO *data_offset;	__u16 params, param_offset, offset, count, byte_count;	cFYI(1, ("In SetUID/GID/Mode"));setPermsRetry:	rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,		      (void **) &pSMBr);	if (rc)		return rc;	if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {		name_len =		    cifsConvertToUCS((__u16 *) pSMB->FileName, fileName, 				     PATH_MAX, nls_codepage, remap);		name_len++;	/* trailing null */		name_len *= 2;	} else {		/* BB improve the check for buffer overruns BB */		name_len = strnlen(fileName, PATH_MAX);		name_len++;	/* trailing null */		strncpy(pSMB->FileName, fileName, name_len);	}	params = 6 + name_len;	count = sizeof (FILE_UNIX_BASIC_INFO);	pSMB->MaxParameterCount = cpu_to_le16(2);	pSMB->MaxDataCount = cpu_to_le16(1000);	/* BB find exact max SMB PDU from sess structure BB */	pSMB->MaxSetupCount = 0;	pSMB->Reserved = 0;	pSMB->Flags = 0;	pSMB->Timeout = 0;	pSMB->Reserved2 = 0;	param_offset = offsetof(struct smb_com_transaction2_spi_req,                                     InformationLevel) - 4;	offset = param_offset + params;	data_offset =	    (FILE_UNIX_BASIC_INFO *) ((char *) &pSMB->hdr.Protocol +				      offset);	memset(data_offset, 0, count);	pSMB->DataOffset = cpu_to_le16(offset);	pSMB->ParameterOffset = cpu_to_le16(param_offset);	pSMB->SetupCount = 1;	pSMB->Reserved3 = 0;	pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);	byte_count = 3 /* pad */  + params + count;	pSMB->ParameterCount = cpu_to_le16(params);	pSMB->DataCount = cpu_to_le16(count);	pSMB->TotalParameterCount = pSMB->ParameterCount;	pSMB->TotalDataCount = pSMB->DataCount;	pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_UNIX_BASIC);	pSMB->Reserved4 = 0;	pSMB->hdr.smb_buf_length += byte_count;	data_offset->Uid = cpu_to_le64(uid);	data_offset->Gid = cpu_to_le64(gid);	/* better to leave device as zero when it is  */	data_offset->DevMajor = cpu_to_le64(MAJOR(device));	data_offset->DevMinor = cpu_to_le64(MINOR(device));	data_offset->Permissions = cpu_to_le64(mode);    	if(S_ISREG(mode))		data_offset->Type = cpu_to_le32(UNIX_FILE);	else if(S_ISDIR(mode))		data_offset->Type = cpu_to_le32(UNIX_DIR);	else if(S_ISLNK(mode))		data_offset->Type = cpu_to_le32(UNIX_SYMLINK);	else if(S_ISCHR(mode))		data_offset->Type = cpu_to_le32(UNIX_CHARDEV);	else if(S_ISBLK(mode))		data_offset->Type = cpu_to_le32(UNIX_BLOCKDEV);	else if(S_ISFIFO(mode))		data_offset->Type = cpu_to_le32(UNIX_FIFO);	else if(S_ISSOCK(mode))		data_offset->Type = cpu_to_le32(UNIX_SOCKET);	pSMB->ByteCount = cpu_to_le16(byte_count);	rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,			 (struct smb_hdr *) pSMBr, &bytes_returned, 0);	if (rc) {		cFYI(1, ("SetPathInfo (perms) returned %d", rc));	}	if (pSMB)		cifs_buf_release(pSMB);	if (rc == -EAGAIN)		goto setPermsRetry;	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b1a45695bde0204597957e448923f09ce271ca80/cifssmb.c/clean/fs/cifs/cifssmb.c