These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / net / sunrpc / sysctl.c
index 887f018..c88d9bc 100644 (file)
@@ -76,7 +76,7 @@ static int
 proc_dodebug(struct ctl_table *table, int write,
                                void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-       char            tmpbuf[20], c, *s;
+       char            tmpbuf[20], c, *s = NULL;
        char __user *p;
        unsigned int    value;
        size_t          left, len;
@@ -103,23 +103,24 @@ proc_dodebug(struct ctl_table *table, int write,
                        return -EFAULT;
                tmpbuf[left] = '\0';
 
-               for (s = tmpbuf, value = 0; '0' <= *s && *s <= '9'; s++, left--)
-                       value = 10 * value + (*s - '0');
-               if (*s && !isspace(*s))
-                       return -EINVAL;
-               while (left && isspace(*s))
-                       left--, s++;
+               value = simple_strtol(tmpbuf, &s, 0);
+               if (s) {
+                       left -= (s - tmpbuf);
+                       if (left && !isspace(*s))
+                               return -EINVAL;
+                       while (left && isspace(*s))
+                               left--, s++;
+               } else
+                       left = 0;
                *(unsigned int *) table->data = value;
                /* Display the RPC tasks on writing to rpc_debug */
                if (strcmp(table->procname, "rpc_debug") == 0)
                        rpc_show_tasks(&init_net);
        } else {
-               if (!access_ok(VERIFY_WRITE, buffer, left))
-                       return -EFAULT;
-               len = sprintf(tmpbuf, "%d", *(unsigned int *) table->data);
+               len = sprintf(tmpbuf, "0x%04x", *(unsigned int *) table->data);
                if (len > left)
                        len = left;
-               if (__copy_to_user(buffer, tmpbuf, len))
+               if (copy_to_user(buffer, tmpbuf, len))
                        return -EFAULT;
                if ((left -= len) > 0) {
                        if (put_user('\n', (char __user *)buffer + len))