VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / sound / oss / dmasound / tas3001c.c
index f8ddd3e..f227c9f 100644 (file)
@@ -452,8 +452,9 @@ tas3001c_eq_rw(     struct tas3001c_data_t *self,
 {
        int rc;
        struct tas_biquad_ctrl_t biquad;
+       void __user *argp = (void __user *)arg;
 
-       if (copy_from_user((void *)&biquad, (const void *)arg, sizeof(struct tas_biquad_ctrl_t))) {
+       if (copy_from_user(&biquad, argp, sizeof(struct tas_biquad_ctrl_t))) {
                return -EFAULT;
        }
 
@@ -466,7 +467,7 @@ tas3001c_eq_rw(     struct tas3001c_data_t *self,
                rc=tas3001c_read_biquad(self, biquad.channel, biquad.filter, &biquad.data);
                if (rc != 0) return rc;
 
-               if (copy_to_user((void *)arg, (const void *)&biquad, sizeof(struct tas_biquad_ctrl_t))) {
+               if (copy_to_user(argp, &biquad, sizeof(struct tas_biquad_ctrl_t))) {
                        return -EFAULT;
                }
 
@@ -485,27 +486,21 @@ tas3001c_eq_list_rw(      struct tas3001c_data_t *self,
        int i,j;
        char sync_required[2][6];
        struct tas_biquad_ctrl_t biquad;
+       struct tas_biquad_ctrl_list_t __user *argp = (void __user *)arg;
 
        memset(sync_required,0,sizeof(sync_required));
 
-       if (copy_from_user((void *)&filter_count,
-                          (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,filter_count),
-                          sizeof(int))) {
+       if (copy_from_user(&filter_count, &argp->filter_count, sizeof(int)))
                return -EFAULT;
-       }
 
-       if (copy_from_user((void *)&flags,
-                          (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,flags),
-                          sizeof(int))) {
+       if (copy_from_user(&flags, &argp->flags, sizeof(int)))
                return -EFAULT;
-       }
 
        if (cmd & SIOC_IN) {
        }
 
        for (i=0; i < filter_count; i++) {
-               if (copy_from_user((void *)&biquad,
-                                  (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]),
+               if (copy_from_user(&biquad, &argp->biquads[i],
                                   sizeof(struct tas_biquad_ctrl_t))) {
                        return -EFAULT;
                }
@@ -520,8 +515,7 @@ tas3001c_eq_list_rw(        struct tas3001c_data_t *self,
                        rc=tas3001c_read_biquad(self, biquad.channel, biquad.filter, &biquad.data);
                        if (rc != 0) return rc;
 
-                       if (copy_to_user((void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]),
-                                        (const void *)&biquad,
+                       if (copy_to_user(&argp->biquads[i], &biquad,
                                         sizeof(struct tas_biquad_ctrl_t))) {
                                return -EFAULT;
                        }
@@ -596,12 +590,10 @@ tas3001c_drce_rw( struct tas3001c_data_t *self,
 {
        int rc;
        struct tas_drce_ctrl_t drce_ctrl;
+       void __user *argp = (void __user *)arg;
 
-       if (copy_from_user((void *)&drce_ctrl,
-                          (const void *)arg,
-                          sizeof(struct tas_drce_ctrl_t))) {
+       if (copy_from_user(&drce_ctrl, argp, sizeof(struct tas_drce_ctrl_t)))
                return -EFAULT;
-       }
 
 #ifdef DEBUG_DRCE
        printk("DRCE IOCTL: input [ FLAGS:%x ENABLE:%x THRESH:%x\n",
@@ -623,8 +615,7 @@ tas3001c_drce_rw(   struct tas3001c_data_t *self,
                if (drce_ctrl.flags & TAS_DRCE_THRESHOLD)
                        drce_ctrl.data.threshold = self->drce_state.threshold;
 
-               if (copy_to_user((void *)arg,
-                                (const void *)&drce_ctrl,
+               if (copy_to_user(argp, &drce_ctrl,
                                 sizeof(struct tas_drce_ctrl_t))) {
                        return -EFAULT;
                }
@@ -703,6 +694,7 @@ tas3001c_device_ioctl(      struct tas3001c_data_t *self,
                        u_int cmd,
                        u_long arg)
 {
+       uint __user *argp = (void __user *)arg;
        switch (cmd) {
        case TAS_READ_EQ:
        case TAS_WRITE_EQ:
@@ -713,11 +705,11 @@ tas3001c_device_ioctl(    struct tas3001c_data_t *self,
                return tas3001c_eq_list_rw(self, cmd, arg);
 
        case TAS_READ_EQ_FILTER_COUNT:
-               put_user(TAS3001C_BIQUAD_FILTER_COUNT, (uint *)(arg));
+               put_user(TAS3001C_BIQUAD_FILTER_COUNT, argp);
                return 0;
 
        case TAS_READ_EQ_CHANNEL_COUNT:
-               put_user(TAS3001C_BIQUAD_CHANNEL_COUNT, (uint *)(arg));
+               put_user(TAS3001C_BIQUAD_CHANNEL_COUNT, argp);
                return 0;
 
        case TAS_READ_DRCE:
@@ -725,15 +717,14 @@ tas3001c_device_ioctl(    struct tas3001c_data_t *self,
                return tas3001c_drce_rw(self, cmd, arg);
 
        case TAS_READ_DRCE_CAPS:
-               put_user(TAS_DRCE_ENABLE | TAS_DRCE_THRESHOLD, (uint *)(arg));
+               put_user(TAS_DRCE_ENABLE | TAS_DRCE_THRESHOLD, argp);
                return 0;
 
        case TAS_READ_DRCE_MIN:
        case TAS_READ_DRCE_MAX: {
                struct tas_drce_ctrl_t drce_ctrl;
 
-               if (copy_from_user((void *)&drce_ctrl,
-                                  (const void *)arg,
+               if (copy_from_user(&drce_ctrl, argp,
                                   sizeof(struct tas_drce_ctrl_t))) {
                        return -EFAULT;
                }
@@ -746,8 +737,7 @@ tas3001c_device_ioctl(      struct tas3001c_data_t *self,
                        }
                }
 
-               if (copy_to_user((void *)arg,
-                                (const void *)&drce_ctrl,
+               if (copy_to_user(argp, &drce_ctrl,
                                 sizeof(struct tas_drce_ctrl_t))) {
                        return -EFAULT;
                }