video/via: Convert to kstrtou8_from_user
[pandora-kernel.git] / drivers / video / via / viafbdev.c
index 0c88375..c80e770 100644 (file)
@@ -1276,17 +1276,12 @@ static int viafb_dfph_proc_open(struct inode *inode, struct file *file)
 static ssize_t viafb_dfph_proc_write(struct file *file,
        const char __user *buffer, size_t count, loff_t *pos)
 {
-       char buf[20];
-       u8 reg_val = 0;
-       unsigned long length;
-       if (count < 1)
-               return -EINVAL;
-       length = count > 20 ? 20 : count;
-       if (copy_from_user(&buf[0], buffer, length))
-               return -EFAULT;
-       buf[length - 1] = '\0'; /*Ensure end string */
-       if (kstrtou8(buf, 0, &reg_val) < 0)
-               return -EINVAL;
+       int err;
+       u8 reg_val;
+       err = kstrtou8_from_user(buffer, count, 0, &reg_val);
+       if (err)
+               return err;
+
        viafb_write_reg_mask(CR97, VIACR, reg_val, 0x0f);
        return count;
 }
@@ -1316,17 +1311,12 @@ static int viafb_dfpl_proc_open(struct inode *inode, struct file *file)
 static ssize_t viafb_dfpl_proc_write(struct file *file,
        const char __user *buffer, size_t count, loff_t *pos)
 {
-       char buf[20];
-       u8 reg_val = 0;
-       unsigned long length;
-       if (count < 1)
-               return -EINVAL;
-       length = count > 20 ? 20 : count;
-       if (copy_from_user(&buf[0], buffer, length))
-               return -EFAULT;
-       buf[length - 1] = '\0'; /*Ensure end string */
-       if (kstrtou8(buf, 0, &reg_val) < 0)
-               return -EINVAL;
+       int err;
+       u8 reg_val;
+       err = kstrtou8_from_user(buffer, count, 0, &reg_val);
+       if (err)
+               return err;
+
        viafb_write_reg_mask(CR99, VIACR, reg_val, 0x0f);
        return count;
 }