[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75Vcdnx28i0s4sKUf+MCruMNq-zdX55f45TcTR7AcO4foSw@mail.gmail.com>
Date: Tue, 27 Sep 2011 21:06:12 +0300
From: Andy Shevchenko <andy.shevchenko@...il.com>
To: OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
linux-kernel@...r.kernel.org,
Denys Vlasenko <vda.linux@...glemail.com>
Subject: Re: [PATCHv2] fat: don't use custom hex_to_bin()
On Tue, Sep 27, 2011 at 8:19 PM, OGAWA Hirofumi
<hirofumi@...l.parknet.co.jp> wrote:
> Andy Shevchenko <andriy.shevchenko@...ux.intel.com> writes:
>
> Looks good to me.
>
> Acked-by: OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
>
> Or if it's needed, I'll apply this to fat tree.
Please, hold on. Read my comments below.
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
>> Cc: OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
>> ---
>> fs/fat/namei_vfat.c | 30 ++++++++----------------------
>> 1 files changed, 8 insertions(+), 22 deletions(-)
>>
>> diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
>> index bb3f29c..cf0fd96 100644
>> --- a/fs/fat/namei_vfat.c
>> +++ b/fs/fat/namei_vfat.c
>> @@ -21,6 +21,8 @@
>> #include <linux/slab.h>
>> #include <linux/buffer_head.h>
>> #include <linux/namei.h>
>> +#include <linux/kernel.h>
>> +
>> #include "fat.h"
>>
>> /*
>> @@ -505,10 +507,8 @@ xlate_to_uni(const unsigned char *name, int len, unsigned char *outname,
>> struct nls_table *nls)
>> {
>> const unsigned char *ip;
>> - unsigned char nc;
>> unsigned char *op;
>> - unsigned int ec;
>> - int i, k, fill;
>> + int i, rc, fill;
>> int charlen;
>>
>> if (utf8) {
>> @@ -528,26 +528,12 @@ xlate_to_uni(const unsigned char *name, int len, unsigned char *outname,
>> 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;
>> - }
>> +
>> + rc = hex2bin(op, ip + 1, 2);
>> + if (rc < 0)
>> return -EINVAL;
>> - }
>> - *op++ = ec & 0xFF;
>> - *op++ = ec >> 8;
Actually here we will change endianess.
So, my question is what endianess is right here? If the original code
okay, then patch should be rewritten like this:
rc = hex2bin(op++, ip + 3, 1);
if (rc < 0)
return -EINVAL;
rc = hex2bin(op++, ip + 1, 1);
if (rc < 0)
return -EINVAL;
>> +
>> + op += 2;
>> ip += 5;
>> i += 5;
>> } else {
>
> --
> OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists