diff options
author | Chandra S Gorentla <csgorentla@gmail.com> | 2015-08-15 12:23:31 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-08-17 12:46:31 -0700 |
commit | 6e3f05bfc02b61adf50709c4a96f07314addeeb6 (patch) | |
tree | 2ba8def3856faa4bacb38291dea2a99690d639b2 /drivers/staging | |
parent | c4f83a5571981c92b028c8e9a9da827598905059 (diff) |
staging: wilc1000: Process WARN, INFO options of debug levels from user
This patch enables setting the module's debug options WARN and INFO in the
debugfs file 'wilc_debug_level'. This functionality allows the user to
enable logging of warnings and other information. Before this change,
writes to this debugfs file set only one option - DEBUG. Another option
that is enabled by default is ERR.
As a side effect, this patch removes the 'sparse' warning -
'warning: incorrect type in argument 2 (different address spaces)'.
Signed-off-by: Chandra S Gorentla <csgorentla@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/wilc1000/wilc_debugfs.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/drivers/staging/wilc1000/wilc_debugfs.c b/drivers/staging/wilc1000/wilc_debugfs.c index be2e901b448d..ae111862e7a9 100644 --- a/drivers/staging/wilc1000/wilc_debugfs.c +++ b/drivers/staging/wilc1000/wilc_debugfs.c @@ -48,28 +48,19 @@ 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); @@ -78,6 +69,7 @@ static ssize_t wilc_debug_level_write(struct file *filp, const char *buf, size_t printk("Debug-level disabled\n"); else printk("Debug-level enabled\n"); + return count; } |