lkml.org 
[lkml]   [2012]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH 1/2] fat: Clean up xlate_to_uni.
Date
Namjae Jeon <linkinjeon@gmail.com> writes:

> The xlate_to_uni is called by vfat_build_slots with sbi->nls_io as the final
> argument. nls_io can never be null at this point because the check is already being done in fat_fill_super wherein the mount fails if it is null.

Looks good to me. And now, I don't have public repo after kernel.org
break in. It would be better to pass akpm.

Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

> Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
> Signed-off-by: Ravishankar N <cyberax82@gmail.com>
> ---
> fs/fat/namei_vfat.c | 83 ++++++++++++++++++++++-----------------------------
> 1 files changed, 36 insertions(+), 47 deletions(-)
>
> diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
> index a81eb23..aae3b4e 100644
> --- a/fs/fat/namei_vfat.c
> +++ b/fs/fat/namei_vfat.c
> @@ -521,57 +521,46 @@ xlate_to_uni(const unsigned char *name, int len, unsigned char *outname,
>
> op = &outname[*outlen * sizeof(wchar_t)];
> } else {
> - if (nls) {
> - for (i = 0, ip = name, op = outname, *outlen = 0;
> - i < len && *outlen <= FAT_LFN_LEN;
> - *outlen += 1)
> - {
> - if (escape && (*ip == ':')) {
> - if (i > len - 5)
> - return -EINVAL;
> - ec = 0;
> - for (k = 1; k < 5; k++) {
> - nc = ip[k];
> - ec <<= 4;
> - if (nc >= '0' && nc <= '9') {
> - ec |= nc - '0';
> - continue;
> - }
> - if (nc >= 'a' && nc <= 'f') {
> - ec |= nc - ('a' - 10);
> - continue;
> - }
> - if (nc >= 'A' && nc <= 'F') {
> - ec |= nc - ('A' - 10);
> - continue;
> - }
> - return -EINVAL;
> + for (i = 0, ip = name, op = outname, *outlen = 0;
> + i < len && *outlen <= FAT_LFN_LEN;
> + *outlen += 1) {
> + if (escape && (*ip == ':')) {
> + if (i > len - 5)
> + return -EINVAL;
> + ec = 0;
> + for (k = 1; k < 5; k++) {
> + nc = ip[k];
> + ec <<= 4;
> + if (nc >= '0' && nc <= '9') {
> + ec |= nc - '0';
> + continue;
> }
> - *op++ = ec & 0xFF;
> - *op++ = ec >> 8;
> - ip += 5;
> - i += 5;
> - } else {
> - if ((charlen = nls->char2uni(ip, len - i, (wchar_t *)op)) < 0)
> - return -EINVAL;
> - ip += charlen;
> - i += charlen;
> - op += 2;
> + if (nc >= 'a' && nc <= 'f') {
> + ec |= nc - ('a' - 10);
> + continue;
> + }
> + if (nc >= 'A' && nc <= 'F') {
> + ec |= nc - ('A' - 10);
> + continue;
> + }
> + return -EINVAL;
> }
> + *op++ = ec & 0xFF;
> + *op++ = ec >> 8;
> + ip += 5;
> + i += 5;
> + } else {
> + charlen = nls->char2uni(ip, len - i,
> + (wchar_t *)op);
> + if (charlen < 0)
> + return -EINVAL;
> + ip += charlen;
> + i += charlen;
> + op += 2;
> }
> - if (i < len)
> - return -ENAMETOOLONG;
> - } else {
> - for (i = 0, ip = name, op = outname, *outlen = 0;
> - i < len && *outlen <= FAT_LFN_LEN;
> - i++, *outlen += 1)
> - {
> - *op++ = *ip++;
> - *op++ = 0;
> - }
> - if (i < len)
> - return -ENAMETOOLONG;
> }
> + if (i < len)
> + return -ENAMETOOLONG;
> }
>
> *longlen = *outlen;

--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>


\
 
 \ /
  Last update: 2012-03-03 22:01    [W:0.040 / U:0.072 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site