From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753226Ab2CCU6s (ORCPT ); Sat, 3 Mar 2012 15:58:48 -0500 Received: from mail.parknet.co.jp ([210.171.160.6]:53338 "EHLO mail.parknet.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752305Ab2CCU6r (ORCPT ); Sat, 3 Mar 2012 15:58:47 -0500 From: OGAWA Hirofumi To: Namjae Jeon Cc: linux-kernel@vger.kernel.org, Ravishankar N , Andrew Morton Subject: Re: [PATCH 1/2] fat: Clean up xlate_to_uni. References: <1330737356-7092-1-git-send-email-linkinjeon@gmail.com> Date: Sun, 04 Mar 2012 05:58:39 +0900 In-Reply-To: <1330737356-7092-1-git-send-email-linkinjeon@gmail.com> (Namjae Jeon's message of "Fri, 2 Mar 2012 20:15:56 -0500") Message-ID: <87d38tv1ts.fsf@devron.myhome.or.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Namjae Jeon 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 > Signed-off-by: Namjae Jeon > Signed-off-by: Ravishankar N > --- > 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