diff options
author | Andy Shevchenko <andy.shevchenko@gmail.com> | 2010-07-15 04:37:19 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-16 04:05:25 +0200 |
commit | 3944ad6848e7ae15a3402372a2df4ae805008321 (patch) | |
tree | c1e57da00fcc75462ac16d1009cd5c2c6593a7b6 /drivers/isdn/hysdn | |
parent | drivers: isdn: use kernel macros to convert hex digit (diff) | |
download | linux-3944ad6848e7ae15a3402372a2df4ae805008321.tar.xz linux-3944ad6848e7ae15a3402372a2df4ae805008321.zip |
drivers: isdn: remove custom strtoul()
In this case we safe to use strict_strtoul().
Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Karsten Keil <isdn@linux-pingi.de>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn/hysdn')
-rw-r--r-- | drivers/isdn/hysdn/hysdn_proclog.c | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/drivers/isdn/hysdn/hysdn_proclog.c b/drivers/isdn/hysdn/hysdn_proclog.c index 7003698e667d..2ee93d04b2dd 100644 --- a/drivers/isdn/hysdn/hysdn_proclog.c +++ b/drivers/isdn/hysdn/hysdn_proclog.c @@ -16,6 +16,7 @@ #include <linux/sched.h> #include <linux/slab.h> #include <linux/mutex.h> +#include <linux/kernel.h> #include "hysdn_defs.h" @@ -155,9 +156,8 @@ static ssize_t hysdn_log_write(struct file *file, const char __user *buf, size_t count, loff_t * off) { unsigned long u = 0; - int found = 0; - unsigned char *cp, valbuf[128]; - long base = 10; + int rc; + unsigned char valbuf[128]; hysdn_card *card = file->private_data; if (count > (sizeof(valbuf) - 1)) @@ -166,32 +166,10 @@ hysdn_log_write(struct file *file, const char __user *buf, size_t count, loff_t return (-EFAULT); /* copy failed */ valbuf[count] = 0; /* terminating 0 */ - cp = valbuf; - if ((count > 2) && (valbuf[0] == '0') && (valbuf[1] == 'x')) { - cp += 2; /* pointer after hex modifier */ - base = 16; - } - /* scan the input for debug flags */ - while (*cp) { - if ((*cp >= '0') && (*cp <= '9')) { - found = 1; - u *= base; /* adjust to next digit */ - u += *cp++ - '0'; - continue; - } - if (base != 16) - break; /* end of number */ - - if ((*cp >= 'a') && (*cp <= 'f')) { - found = 1; - u *= base; /* adjust to next digit */ - u += *cp++ - 'a' + 10; - continue; - } - break; /* terminated */ - } - if (found) { + rc = strict_strtoul(valbuf, 0, &u); + + if (rc == 0) { card->debug_flags = u; /* remember debug flags */ hysdn_addlog(card, "debug set to 0x%lx", card->debug_flags); } |