- const u32 *tmp = (const u32 *)buf;
- u32 data[2];
- size_t rv;
- u32 reg = *ppos;
- int cpu = iminor(file->f_dentry->d_inode);
- int err;
-
- if ( count % 8 )
- return -EINVAL; /* Invalid chunk size */
-
- for ( rv = 0 ; count ; count -= 8 ) {
- if ( copy_from_user(&data,tmp,8) )
- return -EFAULT;
- err = do_wrmsr(cpu, reg, data[0], data[1]);
- if ( err )
- return err;
- tmp += 2;
- }
-
- return ((char *)tmp) - buf;
+ const u32 __user *tmp = (const u32 __user *)buf;
+ u32 data[2];
+ size_t rv;
+ u32 reg = *ppos;
+ int cpu = iminor(file->f_dentry->d_inode);
+ int err;
+
+ if (count % 8)
+ return -EINVAL; /* Invalid chunk size */
+
+ for (rv = 0; count; count -= 8) {
+ if (copy_from_user(&data, tmp, 8))
+ return -EFAULT;
+ err = do_wrmsr(cpu, reg, data[0], data[1]);
+ if (err)
+ return err;
+ tmp += 2;
+ }
+
+ return ((char __user *)tmp) - buf;