mirror of https://gitee.com/openkylin/linux.git
tcm_fc: remove custom hex_to_bin in ft_parse_wwn
This patch converts ft_parse_wwn() to use hex_to_bin() instead of custom conversion code. (Andy: Re-add missing strict && isupper(c) check) Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
f2b56afd40
commit
635a2b3f3e
|
@ -31,6 +31,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/configfs.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <asm/unaligned.h>
|
||||
#include <scsi/scsi.h>
|
||||
|
@ -70,10 +71,10 @@ static ssize_t ft_parse_wwn(const char *name, u64 *wwn, int strict)
|
|||
{
|
||||
const char *cp;
|
||||
char c;
|
||||
u32 nibble;
|
||||
u32 byte = 0;
|
||||
u32 pos = 0;
|
||||
u32 err;
|
||||
int val;
|
||||
|
||||
*wwn = 0;
|
||||
for (cp = name; cp < &name[FT_NAMELEN - 1]; cp++) {
|
||||
|
@ -94,13 +95,10 @@ static ssize_t ft_parse_wwn(const char *name, u64 *wwn, int strict)
|
|||
return cp - name;
|
||||
}
|
||||
err = 3;
|
||||
if (isdigit(c))
|
||||
nibble = c - '0';
|
||||
else if (isxdigit(c) && (islower(c) || !strict))
|
||||
nibble = tolower(c) - 'a' + 10;
|
||||
else
|
||||
val = hex_to_bin(c);
|
||||
if (val < 0 || (strict && isupper(c)))
|
||||
goto fail;
|
||||
*wwn = (*wwn << 4) | nibble;
|
||||
*wwn = (*wwn << 4) | val;
|
||||
}
|
||||
err = 4;
|
||||
fail:
|
||||
|
|
Loading…
Reference in New Issue