On Tue, Jan 17, 2012 at 1:31 PM, Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: > to reflect the unicode encoding used by CIFS protocol. > > Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx> > --- > fs/cifs/cifs_unicode.c | 41 ++++++------ > fs/cifs/cifs_unicode.h | 20 +++--- > fs/cifs/cifsencrypt.c | 12 ++-- > fs/cifs/cifssmb.c | 162 +++++++++++++++++++++++++----------------------- > fs/cifs/connect.c | 4 +- > fs/cifs/readdir.c | 9 ++- > fs/cifs/sess.c | 34 +++++----- > fs/cifs/smbencrypt.c | 2 +- > 8 files changed, 146 insertions(+), 138 deletions(-) > > diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c > index 1b2e180..fbb9da9 100644 > --- a/fs/cifs/cifs_unicode.c > +++ b/fs/cifs/cifs_unicode.c > @@ -27,17 +27,17 @@ > #include "cifs_debug.h" > > /* > - * cifs_ucs2_bytes - how long will a string be after conversion? > - * @ucs - pointer to input string > + * cifs_utf16_bytes - how long will a string be after conversion? > + * @utf16 - pointer to input string > * @maxbytes - don't go past this many bytes of input string > * @codepage - destination codepage > * > - * Walk a ucs2le string and return the number of bytes that the string will > + * Walk a utf16le string and return the number of bytes that the string will > * be after being converted to the given charset, not including any null > * termination required. Don't walk past maxbytes in the source buffer. > */ > int > -cifs_ucs2_bytes(const __le16 *from, int maxbytes, > +cifs_utf16_bytes(const __le16 *from, int maxbytes, > const struct nls_table *codepage) > { > int i; > @@ -122,7 +122,7 @@ cp_convert: > } > > /* > - * cifs_from_ucs2 - convert utf16le string to local charset > + * cifs_from_utf16 - convert utf16le string to local charset > * @to - destination buffer > * @from - source buffer > * @tolen - destination buffer size (in bytes) > @@ -130,7 +130,7 @@ cp_convert: > * @codepage - codepage to which characters should be converted > * @mapchar - should characters be remapped according to the mapchars option? > * > - * Convert a little-endian ucs2le string (as sent by the server) to a string > + * Convert a little-endian utf16le string (as sent by the server) to a string > * in the provided codepage. The tolen and fromlen parameters are to ensure > * that the code doesn't walk off of the end of the buffer (which is always > * a danger if the alignment of the source buffer is off). The destination > @@ -139,12 +139,12 @@ cp_convert: > * null terminator). > * > * Note that some windows versions actually send multiword UTF-16 characters > - * instead of straight UCS-2. The linux nls routines however aren't able to > + * instead of straight UTF16-2. The linux nls routines however aren't able to nitpicking, UTF16 instead of UTF16-2. Looks correct though. Reviewed-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> > * deal with those characters properly. In the event that we get some of > * those characters, they won't be translated properly. > */ > int > -cifs_from_ucs2(char *to, const __le16 *from, int tolen, int fromlen, > +cifs_from_utf16(char *to, const __le16 *from, int tolen, int fromlen, > const struct nls_table *codepage, bool mapchar) > { > int i, charlen, safelen; > @@ -190,13 +190,13 @@ cifs_from_ucs2(char *to, const __le16 *from, int tolen, int fromlen, > } > > /* > - * NAME: cifs_strtoUCS() > + * NAME: cifs_strtoUTF16() > * > * FUNCTION: Convert character string to unicode string > * > */ > int > -cifs_strtoUCS(__le16 *to, const char *from, int len, > +cifs_strtoUTF16(__le16 *to, const char *from, int len, > const struct nls_table *codepage) > { > int charlen; > @@ -206,7 +206,7 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, > for (i = 0; len && *from; i++, from += charlen, len -= charlen) { > charlen = codepage->char2uni(from, len, &wchar_to); > if (charlen < 1) { > - cERROR(1, "strtoUCS: char2uni of 0x%x returned %d", > + cERROR(1, "strtoUTF16: char2uni of 0x%x returned %d", > *from, charlen); > /* A question mark */ > wchar_to = 0x003f; > @@ -220,7 +220,8 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, > } > > /* > - * cifs_strndup_from_ucs - copy a string from wire format to the local codepage > + * cifs_strndup_from_utf16 - copy a string from wire format to the local > + * codepage > * @src - source string > * @maxlen - don't walk past this many bytes in the source string > * @is_unicode - is this a unicode string? > @@ -231,19 +232,19 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, > * error. > */ > char * > -cifs_strndup_from_ucs(const char *src, const int maxlen, const bool is_unicode, > - const struct nls_table *codepage) > +cifs_strndup_from_utf16(const char *src, const int maxlen, > + const bool is_unicode, const struct nls_table *codepage) > { > int len; > char *dst; > > if (is_unicode) { > - len = cifs_ucs2_bytes((__le16 *) src, maxlen, codepage); > + len = cifs_utf16_bytes((__le16 *) src, maxlen, codepage); > len += nls_nullsize(codepage); > dst = kmalloc(len, GFP_KERNEL); > if (!dst) > return NULL; > - cifs_from_ucs2(dst, (__le16 *) src, len, maxlen, codepage, > + cifs_from_utf16(dst, (__le16 *) src, len, maxlen, codepage, > false); > } else { > len = strnlen(src, maxlen); > @@ -264,7 +265,7 @@ cifs_strndup_from_ucs(const char *src, const int maxlen, const bool is_unicode, > * names are little endian 16 bit Unicode on the wire > */ > int > -cifsConvertToUCS(__le16 *target, const char *source, int srclen, > +cifsConvertToUTF16(__le16 *target, const char *source, int srclen, > const struct nls_table *cp, int mapChars) > { > int i, j, charlen; > @@ -273,7 +274,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, > wchar_t tmp; > > if (!mapChars) > - return cifs_strtoUCS(target, source, PATH_MAX, cp); > + return cifs_strtoUTF16(target, source, PATH_MAX, cp); > > for (i = 0, j = 0; i < srclen; j++) { > src_char = source[i]; > @@ -281,7 +282,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, > switch (src_char) { > case 0: > put_unaligned(0, &target[j]); > - goto ctoUCS_out; > + goto ctoUTF16_out; > case ':': > dst_char = cpu_to_le16(UNI_COLON); > break; > @@ -326,7 +327,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, > put_unaligned(dst_char, &target[j]); > } > > -ctoUCS_out: > +ctoUTF16_out: > return i; > } > > diff --git a/fs/cifs/cifs_unicode.h b/fs/cifs/cifs_unicode.h > index 6d02fd5..a513a54 100644 > --- a/fs/cifs/cifs_unicode.h > +++ b/fs/cifs/cifs_unicode.h > @@ -74,16 +74,16 @@ extern const struct UniCaseRange CifsUniLowerRange[]; > #endif /* UNIUPR_NOLOWER */ > > #ifdef __KERNEL__ > -int cifs_from_ucs2(char *to, const __le16 *from, int tolen, int fromlen, > - const struct nls_table *codepage, bool mapchar); > -int cifs_ucs2_bytes(const __le16 *from, int maxbytes, > - const struct nls_table *codepage); > -int cifs_strtoUCS(__le16 *, const char *, int, const struct nls_table *); > -char *cifs_strndup_from_ucs(const char *src, const int maxlen, > - const bool is_unicode, > - const struct nls_table *codepage); > -extern int cifsConvertToUCS(__le16 *target, const char *source, int maxlen, > - const struct nls_table *cp, int mapChars); > +int cifs_from_utf16(char *to, const __le16 *from, int tolen, int fromlen, > + const struct nls_table *codepage, bool mapchar); > +int cifs_utf16_bytes(const __le16 *from, int maxbytes, > + const struct nls_table *codepage); > +int cifs_strtoUTF16(__le16 *, const char *, int, const struct nls_table *); > +char *cifs_strndup_from_utf16(const char *src, const int maxlen, > + const bool is_unicode, > + const struct nls_table *codepage); > +extern int cifsConvertToUTF16(__le16 *target, const char *source, int maxlen, > + const struct nls_table *cp, int mapChars); > > #endif > > diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c > index 5d9b9ac..f6ddd3d 100644 > --- a/fs/cifs/cifsencrypt.c > +++ b/fs/cifs/cifsencrypt.c > @@ -327,7 +327,7 @@ build_avpair_blob(struct cifs_ses *ses, const struct nls_table *nls_cp) > attrptr->type = cpu_to_le16(NTLMSSP_AV_NB_DOMAIN_NAME); > attrptr->length = cpu_to_le16(2 * dlen); > blobptr = (unsigned char *)attrptr + sizeof(struct ntlmssp2_name); > - cifs_strtoUCS((__le16 *)blobptr, ses->domainName, dlen, nls_cp); > + cifs_strtoUTF16((__le16 *)blobptr, ses->domainName, dlen, nls_cp); > > return 0; > } > @@ -376,7 +376,7 @@ find_domain_name(struct cifs_ses *ses, const struct nls_table *nls_cp) > kmalloc(attrsize + 1, GFP_KERNEL); > if (!ses->domainName) > return -ENOMEM; > - cifs_from_ucs2(ses->domainName, > + cifs_from_utf16(ses->domainName, > (__le16 *)blobptr, attrsize, attrsize, > nls_cp, false); > break; > @@ -427,7 +427,7 @@ static int calc_ntlmv2_hash(struct cifs_ses *ses, char *ntlmv2_hash, > rc = -ENOMEM; > return rc; > } > - len = cifs_strtoUCS((__le16 *)user, ses->user_name, len, nls_cp); > + len = cifs_strtoUTF16((__le16 *)user, ses->user_name, len, nls_cp); > UniStrupr(user); > > rc = crypto_shash_update(&ses->server->secmech.sdeschmacmd5->shash, > @@ -448,8 +448,8 @@ static int calc_ntlmv2_hash(struct cifs_ses *ses, char *ntlmv2_hash, > rc = -ENOMEM; > return rc; > } > - len = cifs_strtoUCS((__le16 *)domain, ses->domainName, len, > - nls_cp); > + len = cifs_strtoUTF16((__le16 *)domain, ses->domainName, len, > + nls_cp); > rc = > crypto_shash_update(&ses->server->secmech.sdeschmacmd5->shash, > (char *)domain, 2 * len); > @@ -468,7 +468,7 @@ static int calc_ntlmv2_hash(struct cifs_ses *ses, char *ntlmv2_hash, > rc = -ENOMEM; > return rc; > } > - len = cifs_strtoUCS((__le16 *)server, ses->serverName, len, > + len = cifs_strtoUTF16((__le16 *)server, ses->serverName, len, > nls_cp); > rc = > crypto_shash_update(&ses->server->secmech.sdeschmacmd5->shash, > diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c > index 6600aa2..8b7794c 100644 > --- a/fs/cifs/cifssmb.c > +++ b/fs/cifs/cifssmb.c > @@ -821,8 +821,8 @@ PsxDelete: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB add path length overrun check */ > @@ -893,8 +893,8 @@ DelFileRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->fileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->fileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve check for buffer overruns BB */ > @@ -938,8 +938,8 @@ RmDirRetry: > return rc; > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > - name_len = cifsConvertToUCS((__le16 *) pSMB->DirName, dirName, > - PATH_MAX, nls_codepage, remap); > + name_len = cifsConvertToUTF16((__le16 *) pSMB->DirName, dirName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve check for buffer overruns BB */ > @@ -981,8 +981,8 @@ MkDirRetry: > return rc; > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > - name_len = cifsConvertToUCS((__le16 *) pSMB->DirName, name, > - PATH_MAX, nls_codepage, remap); > + name_len = cifsConvertToUTF16((__le16 *) pSMB->DirName, name, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve check for buffer overruns BB */ > @@ -1030,8 +1030,8 @@ PsxCreat: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, name, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, name, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -1197,8 +1197,8 @@ OldOpenRetry: > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > count = 1; /* account for one byte pad to word boundary */ > name_len = > - cifsConvertToUCS((__le16 *) (pSMB->fileName + 1), > - fileName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) (pSMB->fileName + 1), > + fileName, PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve check for buffer overruns BB */ > @@ -1304,8 +1304,8 @@ openRetry: > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > count = 1; /* account for one byte pad to word boundary */ > name_len = > - cifsConvertToUCS((__le16 *) (pSMB->fileName + 1), > - fileName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) (pSMB->fileName + 1), > + fileName, PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > pSMB->NameLength = cpu_to_le16(name_len); > @@ -2649,16 +2649,16 @@ renameRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->OldFileName, fromName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->OldFileName, fromName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > pSMB->OldFileName[name_len] = 0x04; /* pad */ > /* protocol requires ASCII signature byte on Unicode string */ > pSMB->OldFileName[name_len + 1] = 0x00; > name_len2 = > - cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2], > - toName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *)&pSMB->OldFileName[name_len+2], > + toName, PATH_MAX, nls_codepage, remap); > name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; > name_len2 *= 2; /* convert to bytes */ > } else { /* BB improve the check for buffer overruns BB */ > @@ -2738,10 +2738,12 @@ int CIFSSMBRenameOpenFile(const int xid, struct cifs_tcon *pTcon, > /* unicode only call */ > if (target_name == NULL) { > sprintf(dummy_string, "cifs%x", pSMB->hdr.Mid); > - len_of_str = cifsConvertToUCS((__le16 *)rename_info->target_name, > + len_of_str = > + cifsConvertToUTF16((__le16 *)rename_info->target_name, > dummy_string, 24, nls_codepage, remap); > } else { > - len_of_str = cifsConvertToUCS((__le16 *)rename_info->target_name, > + len_of_str = > + cifsConvertToUTF16((__le16 *)rename_info->target_name, > target_name, PATH_MAX, nls_codepage, > remap); > } > @@ -2795,17 +2797,17 @@ copyRetry: > pSMB->Flags = cpu_to_le16(flags & COPY_TREE); > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > - name_len = cifsConvertToUCS((__le16 *) pSMB->OldFileName, > - fromName, PATH_MAX, nls_codepage, > - remap); > + name_len = cifsConvertToUTF16((__le16 *) pSMB->OldFileName, > + fromName, PATH_MAX, nls_codepage, > + remap); > name_len++; /* trailing null */ > name_len *= 2; > pSMB->OldFileName[name_len] = 0x04; /* pad */ > /* protocol requires ASCII signature byte on Unicode string */ > pSMB->OldFileName[name_len + 1] = 0x00; > name_len2 = > - cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2], > - toName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *)&pSMB->OldFileName[name_len+2], > + toName, PATH_MAX, nls_codepage, remap); > name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; > name_len2 *= 2; /* convert to bytes */ > } else { /* BB improve the check for buffer overruns BB */ > @@ -2861,9 +2863,9 @@ createSymLinkRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifs_strtoUCS((__le16 *) pSMB->FileName, fromName, PATH_MAX > - /* find define for this maxpathcomponent */ > - , nls_codepage); > + cifs_strtoUTF16((__le16 *) pSMB->FileName, fromName, > + /* find define for this maxpathcomponent */ > + PATH_MAX, nls_codepage); > name_len++; /* trailing null */ > name_len *= 2; > > @@ -2885,9 +2887,9 @@ createSymLinkRetry: > data_offset = (char *) (&pSMB->hdr.Protocol) + offset; > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len_target = > - cifs_strtoUCS((__le16 *) data_offset, toName, PATH_MAX > - /* find define for this maxpathcomponent */ > - , nls_codepage); > + cifs_strtoUTF16((__le16 *) data_offset, toName, PATH_MAX > + /* find define for this maxpathcomponent */ > + , nls_codepage); > name_len_target++; /* trailing null */ > name_len_target *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -2949,8 +2951,8 @@ createHardLinkRetry: > return rc; > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > - name_len = cifsConvertToUCS((__le16 *) pSMB->FileName, toName, > - PATH_MAX, nls_codepage, remap); > + name_len = cifsConvertToUTF16((__le16 *) pSMB->FileName, toName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > > @@ -2972,8 +2974,8 @@ createHardLinkRetry: > data_offset = (char *) (&pSMB->hdr.Protocol) + offset; > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len_target = > - cifsConvertToUCS((__le16 *) data_offset, fromName, PATH_MAX, > - nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) data_offset, fromName, > + PATH_MAX, nls_codepage, remap); > name_len_target++; /* trailing null */ > name_len_target *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -3042,8 +3044,8 @@ winCreateHardLinkRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->OldFileName, fromName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->OldFileName, fromName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > > @@ -3051,8 +3053,8 @@ winCreateHardLinkRetry: > pSMB->OldFileName[name_len] = 0x04; > pSMB->OldFileName[name_len + 1] = 0x00; /* pad */ > name_len2 = > - cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2], > - toName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *)&pSMB->OldFileName[name_len+2], > + toName, PATH_MAX, nls_codepage, remap); > name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; > name_len2 *= 2; /* convert to bytes */ > } else { /* BB improve the check for buffer overruns BB */ > @@ -3108,8 +3110,8 @@ querySymLinkRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifs_strtoUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage); > + cifs_strtoUTF16((__le16 *) pSMB->FileName, searchName, > + PATH_MAX, nls_codepage); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -3166,8 +3168,8 @@ querySymLinkRetry: > is_unicode = false; > > /* BB FIXME investigate remapping reserved chars here */ > - *symlinkinfo = cifs_strndup_from_ucs(data_start, count, > - is_unicode, nls_codepage); > + *symlinkinfo = cifs_strndup_from_utf16(data_start, > + count, is_unicode, nls_codepage); > if (!*symlinkinfo) > rc = -ENOMEM; > } > @@ -3450,8 +3452,9 @@ queryAclRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, > + searchName, PATH_MAX, nls_codepage, > + remap); > name_len++; /* trailing null */ > name_len *= 2; > pSMB->FileName[name_len] = 0; > @@ -3537,8 +3540,8 @@ setAclRetry: > return rc; > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -3948,8 +3951,9 @@ QInfRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, > + searchName, PATH_MAX, nls_codepage, > + remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { > @@ -4086,8 +4090,8 @@ QPathInfoRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, searchName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -4255,8 +4259,8 @@ UnixQPathInfoRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, searchName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -4344,8 +4348,8 @@ findFirstRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, searchName, > + PATH_MAX, nls_codepage, remap); > /* We can not add the asterik earlier in case > it got remapped to 0xF03A as if it were part of the > directory name instead of a wildcard */ > @@ -4656,8 +4660,9 @@ GetInodeNumberRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, > + searchName, PATH_MAX, nls_codepage, > + remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -4794,9 +4799,9 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr, > rc = -ENOMEM; > goto parse_DFS_referrals_exit; > } > - cifsConvertToUCS((__le16 *) tmp, searchName, > - PATH_MAX, nls_codepage, remap); > - node->path_consumed = cifs_ucs2_bytes(tmp, > + cifsConvertToUTF16((__le16 *) tmp, searchName, > + PATH_MAX, nls_codepage, remap); > + node->path_consumed = cifs_utf16_bytes(tmp, > le16_to_cpu(pSMBr->PathConsumed), > nls_codepage); > kfree(tmp); > @@ -4809,8 +4814,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr, > /* copy DfsPath */ > temp = (char *)ref + le16_to_cpu(ref->DfsPathOffset); > max_len = data_end - temp; > - node->path_name = cifs_strndup_from_ucs(temp, max_len, > - is_unicode, nls_codepage); > + node->path_name = cifs_strndup_from_utf16(temp, max_len, > + is_unicode, nls_codepage); > if (!node->path_name) { > rc = -ENOMEM; > goto parse_DFS_referrals_exit; > @@ -4819,8 +4824,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr, > /* copy link target UNC */ > temp = (char *)ref + le16_to_cpu(ref->NetworkAddressOffset); > max_len = data_end - temp; > - node->node_name = cifs_strndup_from_ucs(temp, max_len, > - is_unicode, nls_codepage); > + node->node_name = cifs_strndup_from_utf16(temp, max_len, > + is_unicode, nls_codepage); > if (!node->node_name) > rc = -ENOMEM; > } > @@ -4873,8 +4878,9 @@ getDFSRetry: > if (ses->capabilities & CAP_UNICODE) { > pSMB->hdr.Flags2 |= SMBFLG2_UNICODE; > name_len = > - cifsConvertToUCS((__le16 *) pSMB->RequestFileName, > - searchName, PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->RequestFileName, > + searchName, PATH_MAX, nls_codepage, > + remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -5506,8 +5512,8 @@ SetEOFRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -5796,8 +5802,8 @@ SetTimesRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -5877,8 +5883,8 @@ SetAttrLgcyRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - ConvertToUCS((__le16 *) pSMB->fileName, fileName, > - PATH_MAX, nls_codepage); > + ConvertToUTF16((__le16 *) pSMB->fileName, fileName, > + PATH_MAX, nls_codepage); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -6030,8 +6036,8 @@ setPermsRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -6123,8 +6129,8 @@ QAllEAsRetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > list_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, searchName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, searchName, > + PATH_MAX, nls_codepage, remap); > list_len++; /* trailing null */ > list_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > @@ -6301,8 +6307,8 @@ SetEARetry: > > if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) { > name_len = > - cifsConvertToUCS((__le16 *) pSMB->FileName, fileName, > - PATH_MAX, nls_codepage, remap); > + cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName, > + PATH_MAX, nls_codepage, remap); > name_len++; /* trailing null */ > name_len *= 2; > } else { /* BB improve the check for buffer overruns BB */ > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > index f3670cf..2838195 100644 > --- a/fs/cifs/connect.c > +++ b/fs/cifs/connect.c > @@ -3478,7 +3478,7 @@ CIFSTCon(unsigned int xid, struct cifs_ses *ses, > if (ses->capabilities & CAP_UNICODE) { > smb_buffer->Flags2 |= SMBFLG2_UNICODE; > length = > - cifs_strtoUCS((__le16 *) bcc_ptr, tree, > + cifs_strtoUTF16((__le16 *) bcc_ptr, tree, > 6 /* max utf8 char length in bytes */ * > (/* server len*/ + 256 /* share len */), nls_codepage); > bcc_ptr += 2 * length; /* convert num 16 bit words to bytes */ > @@ -3533,7 +3533,7 @@ CIFSTCon(unsigned int xid, struct cifs_ses *ses, > > /* mostly informational -- no need to fail on error here */ > kfree(tcon->nativeFileSystem); > - tcon->nativeFileSystem = cifs_strndup_from_ucs(bcc_ptr, > + tcon->nativeFileSystem = cifs_strndup_from_utf16(bcc_ptr, > bytes_left, is_unicode, > nls_codepage); > > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > index a090bbe..e2bbc68 100644 > --- a/fs/cifs/readdir.c > +++ b/fs/cifs/readdir.c > @@ -647,10 +647,11 @@ static int cifs_filldir(char *find_entry, struct file *file, filldir_t filldir, > > name.name = scratch_buf; > name.len = > - cifs_from_ucs2((char *)name.name, (__le16 *)de.name, > - UNICODE_NAME_MAX, > - min(de.namelen, (size_t)max_len), nlt, > - cifs_sb->mnt_cifs_flags & > + cifs_from_utf16((char *)name.name, (__le16 *)de.name, > + UNICODE_NAME_MAX, > + min_t(size_t, de.namelen, > + (size_t)max_len), nlt, > + cifs_sb->mnt_cifs_flags & > CIFS_MOUNT_MAP_SPECIAL_CHR); > name.len -= nls_nullsize(nlt); > } else { > diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c > index 4ec3ee9..d85efad 100644 > --- a/fs/cifs/sess.c > +++ b/fs/cifs/sess.c > @@ -167,16 +167,16 @@ unicode_oslm_strings(char **pbcc_area, const struct nls_table *nls_cp) > int bytes_ret = 0; > > /* Copy OS version */ > - bytes_ret = cifs_strtoUCS((__le16 *)bcc_ptr, "Linux version ", 32, > - nls_cp); > + bytes_ret = cifs_strtoUTF16((__le16 *)bcc_ptr, "Linux version ", 32, > + nls_cp); > bcc_ptr += 2 * bytes_ret; > - bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, init_utsname()->release, > - 32, nls_cp); > + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, init_utsname()->release, > + 32, nls_cp); > bcc_ptr += 2 * bytes_ret; > bcc_ptr += 2; /* trailing null */ > > - bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, CIFS_NETWORK_OPSYS, > - 32, nls_cp); > + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, CIFS_NETWORK_OPSYS, > + 32, nls_cp); > bcc_ptr += 2 * bytes_ret; > bcc_ptr += 2; /* trailing null */ > > @@ -197,8 +197,8 @@ static void unicode_domain_string(char **pbcc_area, struct cifs_ses *ses, > *(bcc_ptr+1) = 0; > bytes_ret = 0; > } else > - bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->domainName, > - 256, nls_cp); > + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->domainName, > + 256, nls_cp); > bcc_ptr += 2 * bytes_ret; > bcc_ptr += 2; /* account for null terminator */ > > @@ -226,8 +226,8 @@ static void unicode_ssetup_strings(char **pbcc_area, struct cifs_ses *ses, > *bcc_ptr = 0; > *(bcc_ptr+1) = 0; > } else { > - bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->user_name, > - MAX_USERNAME_SIZE, nls_cp); > + bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->user_name, > + MAX_USERNAME_SIZE, nls_cp); > } > bcc_ptr += 2 * bytes_ret; > bcc_ptr += 2; /* account for null termination */ > @@ -287,7 +287,7 @@ decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifs_ses *ses, > cFYI(1, "bleft %d", bleft); > > kfree(ses->serverOS); > - ses->serverOS = cifs_strndup_from_ucs(data, bleft, true, nls_cp); > + ses->serverOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); > cFYI(1, "serverOS=%s", ses->serverOS); > len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; > data += len; > @@ -296,7 +296,7 @@ decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifs_ses *ses, > return; > > kfree(ses->serverNOS); > - ses->serverNOS = cifs_strndup_from_ucs(data, bleft, true, nls_cp); > + ses->serverNOS = cifs_strndup_from_utf16(data, bleft, true, nls_cp); > cFYI(1, "serverNOS=%s", ses->serverNOS); > len = (UniStrnlen((wchar_t *) data, bleft / 2) * 2) + 2; > data += len; > @@ -305,7 +305,7 @@ decode_unicode_ssetup(char **pbcc_area, int bleft, struct cifs_ses *ses, > return; > > kfree(ses->serverDomain); > - ses->serverDomain = cifs_strndup_from_ucs(data, bleft, true, nls_cp); > + ses->serverDomain = cifs_strndup_from_utf16(data, bleft, true, nls_cp); > cFYI(1, "serverDomain=%s", ses->serverDomain); > > return; > @@ -502,8 +502,8 @@ static int build_ntlmssp_auth_blob(unsigned char *pbuffer, > tmp += 2; > } else { > int len; > - len = cifs_strtoUCS((__le16 *)tmp, ses->domainName, > - MAX_USERNAME_SIZE, nls_cp); > + len = cifs_strtoUTF16((__le16 *)tmp, ses->domainName, > + MAX_USERNAME_SIZE, nls_cp); > len *= 2; /* unicode is 2 bytes each */ > sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - pbuffer); > sec_blob->DomainName.Length = cpu_to_le16(len); > @@ -518,8 +518,8 @@ static int build_ntlmssp_auth_blob(unsigned char *pbuffer, > tmp += 2; > } else { > int len; > - len = cifs_strtoUCS((__le16 *)tmp, ses->user_name, > - MAX_USERNAME_SIZE, nls_cp); > + len = cifs_strtoUTF16((__le16 *)tmp, ses->user_name, > + MAX_USERNAME_SIZE, nls_cp); > len *= 2; /* unicode is 2 bytes each */ > sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - pbuffer); > sec_blob->UserName.Length = cpu_to_le16(len); > diff --git a/fs/cifs/smbencrypt.c b/fs/cifs/smbencrypt.c > index 80d8508..d5cd9aa 100644 > --- a/fs/cifs/smbencrypt.c > +++ b/fs/cifs/smbencrypt.c > @@ -213,7 +213,7 @@ E_md4hash(const unsigned char *passwd, unsigned char *p16, > > /* Password cannot be longer than 128 characters */ > if (passwd) /* Password must be converted to NT unicode */ > - len = cifs_strtoUCS(wpwd, passwd, 128, codepage); > + len = cifs_strtoUTF16(wpwd, passwd, 128, codepage); > else { > len = 0; > *wpwd = 0; /* Ensure string is null terminated */ > -- > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html