From 8d91c1e411f55d7ea91b1183a2e9f8088fb4d5be Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Tue, 15 Dec 2015 14:52:16 -0300 Subject: Linux-libre 4.3.2-gnu --- drivers/staging/wilc1000/wilc_debugfs.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'drivers/staging/wilc1000/wilc_debugfs.c') diff --git a/drivers/staging/wilc1000/wilc_debugfs.c b/drivers/staging/wilc1000/wilc_debugfs.c index c328208cd..ae111862e 100644 --- a/drivers/staging/wilc1000/wilc_debugfs.c +++ b/drivers/staging/wilc1000/wilc_debugfs.c @@ -48,38 +48,28 @@ static ssize_t wilc_debug_level_read(struct file *file, char __user *userbuf, si return simple_read_from_buffer(userbuf, count, ppos, buf, res); } -static ssize_t wilc_debug_level_write(struct file *filp, const char *buf, size_t count, loff_t *ppos) +static ssize_t wilc_debug_level_write(struct file *filp, const char __user *buf, + size_t count, loff_t *ppos) { - char buffer[128] = {}; int flag = 0; + int ret; - if (count > sizeof(buffer)) - return -EINVAL; - - if (copy_from_user(buffer, buf, count)) { - return -EFAULT; - } - - flag = buffer[0] - '0'; - - if (flag > 0) { - flag = DEBUG | ERR; - } else if (flag < 0) { - flag = 100; - } + ret = kstrtouint_from_user(buf, count, 16, &flag); + if (ret) + return ret; if (flag > DBG_LEVEL_ALL) { printk("%s, value (0x%08x) is out of range, stay previous flag (0x%08x)\n", __func__, flag, atomic_read(&DEBUG_LEVEL)); - return -EFAULT; + return -EINVAL; } atomic_set(&DEBUG_LEVEL, (int)flag); - if (flag == 0) { + if (flag == 0) printk("Debug-level disabled\n"); - } else { + else printk("Debug-level enabled\n"); - } + return count; } -- cgit v1.2.3-54-g00ecf