patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / sparc / kernel / apc.c
index f502d9b..d01b6cc 100644 (file)
@@ -84,47 +84,44 @@ static int apc_release(struct inode *inode, struct file *f)
 }
 
 static int apc_ioctl(struct inode *inode, struct file *f, 
-                    unsigned int cmd, unsigned long arg)
+                    unsigned int cmd, unsigned long __arg)
 {
-       __u8 inarg;
+       __u8 inarg, __user *arg;
 
+       arg = (__u8 __user *) __arg;
        switch (cmd) {
-               case APCIOCGFANCTL:
-                       if(put_user(apc_readb(APC_FANCTL_REG) & APC_REGMASK, (__u8*) arg)) {
+       case APCIOCGFANCTL:
+               if (put_user(apc_readb(APC_FANCTL_REG) & APC_REGMASK, arg))
                                return -EFAULT;
-                       }
-                       break;
-               case APCIOCGCPWR:
-                       if(put_user(apc_readb(APC_CPOWER_REG) & APC_REGMASK, (__u8*) arg)) {
-                               return -EFAULT;
-                       }
-                       break;
-               case APCIOCGBPORT:
-                       if(put_user(apc_readb(APC_BPORT_REG) & APC_BPMASK, (__u8*) arg)) {
-                               return -EFAULT;
-                       }
-                       break;
-
-               case APCIOCSFANCTL:
-                       if(get_user(inarg, (__u8*) arg)) {
-                               return -EFAULT;
-                       }
-                       apc_writeb(inarg & APC_REGMASK, APC_FANCTL_REG);
-                       break;
-               case APCIOCSCPWR:
-                       if(get_user(inarg, (__u8*) arg)) {
-                               return -EFAULT;
-                       }
-                       apc_writeb(inarg & APC_REGMASK, APC_CPOWER_REG);
-                       break;
-               case APCIOCSBPORT:
-                       if(get_user(inarg, (__u8*) arg)) {
-                               return -EFAULT;
-                       }
-                       apc_writeb(inarg & APC_BPMASK, APC_BPORT_REG);
-                       break;
-               default:
-                       return -EINVAL;
+               break;
+
+       case APCIOCGCPWR:
+               if (put_user(apc_readb(APC_CPOWER_REG) & APC_REGMASK, arg))
+                       return -EFAULT;
+               break;
+
+       case APCIOCGBPORT:
+               if (put_user(apc_readb(APC_BPORT_REG) & APC_BPMASK, arg))
+                       return -EFAULT;
+               break;
+
+       case APCIOCSFANCTL:
+               if (get_user(inarg, arg))
+                       return -EFAULT;
+               apc_writeb(inarg & APC_REGMASK, APC_FANCTL_REG);
+               break;
+       case APCIOCSCPWR:
+               if (get_user(inarg, arg))
+                       return -EFAULT;
+               apc_writeb(inarg & APC_REGMASK, APC_CPOWER_REG);
+               break;
+       case APCIOCSBPORT:
+               if (get_user(inarg, arg))
+                       return -EFAULT;
+               apc_writeb(inarg & APC_BPMASK, APC_BPORT_REG);
+               break;
+       default:
+               return -EINVAL;
        };
 
        return 0;