X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Foss%2Fdmasound%2Ftas3004.c;h=933b46006695d9e182273f8da074d0893b66b48d;hb=28169de0a7d33c5a792a8a4be7f519c637099cea;hp=82eaaca2db9a42a69ff39c790f87ef5b7e2f4b79;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/sound/oss/dmasound/tas3004.c b/sound/oss/dmasound/tas3004.c index 82eaaca2d..933b46006 100644 --- a/sound/oss/dmasound/tas3004.c +++ b/sound/oss/dmasound/tas3004.c @@ -635,11 +635,10 @@ tas3004_eq_rw( struct tas3004_data_t *self, u_int cmd, u_long arg) { - void __user *argp = (void __user *)arg; int rc; struct tas_biquad_ctrl_t biquad; - if (copy_from_user((void *)&biquad, argp, sizeof(struct tas_biquad_ctrl_t))) { + if (copy_from_user((void *)&biquad, (const void *)arg, sizeof(struct tas_biquad_ctrl_t))) { return -EFAULT; } @@ -652,7 +651,7 @@ tas3004_eq_rw( struct tas3004_data_t *self, rc=tas3004_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); if (rc != 0) return rc; - if (copy_to_user(argp, &biquad, sizeof(struct tas_biquad_ctrl_t))) { + if (copy_to_user((void *)arg, (const void *)&biquad, sizeof(struct tas_biquad_ctrl_t))) { return -EFAULT; } @@ -671,21 +670,27 @@ tas3004_eq_list_rw( struct tas3004_data_t *self, int i,j; char sync_required[TAS3004_BIQUAD_CHANNEL_COUNT][TAS3004_BIQUAD_FILTER_COUNT]; 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(&filter_count, &argp->filter_count, sizeof(int))) + if (copy_from_user((void *)&filter_count, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,filter_count), + sizeof(int))) { return -EFAULT; + } - if (copy_from_user(&flags, &argp->flags, sizeof(int))) + if (copy_from_user((void *)&flags, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t,flags), + sizeof(int))) { return -EFAULT; + } if (cmd & SIOC_IN) { } for (i=0; i < filter_count; i++) { - if (copy_from_user(&biquad, &argp->biquads[i], + if (copy_from_user((void *)&biquad, + (const void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), sizeof(struct tas_biquad_ctrl_t))) { return -EFAULT; } @@ -700,7 +705,8 @@ tas3004_eq_list_rw( struct tas3004_data_t *self, rc=tas3004_read_biquad(self, biquad.channel, biquad.filter, &biquad.data); if (rc != 0) return rc; - if (copy_to_user(&argp->biquads[i], &biquad, + if (copy_to_user((void *)arg + offsetof(struct tas_biquad_ctrl_list_t, biquads[i]), + (const void *)&biquad, sizeof(struct tas_biquad_ctrl_t))) { return -EFAULT; } @@ -834,10 +840,12 @@ tas3004_drce_rw( struct tas3004_data_t *self, { int rc; struct tas_drce_ctrl_t drce_ctrl; - void __user *argp = (void __user *)arg; - if (copy_from_user(&drce_ctrl, argp, sizeof(struct tas_drce_ctrl_t))) + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, + sizeof(struct tas_drce_ctrl_t))) { return -EFAULT; + } #ifdef DEBUG_DRCE printk("DRCE: input [ FLAGS:%x ENABLE:%x ABOVE:%x/%x BELOW:%x/%x THRESH:%x ENERGY:%x ATTACK:%x DECAY:%x\n", @@ -872,7 +880,8 @@ tas3004_drce_rw( struct tas3004_data_t *self, if (drce_ctrl.flags & TAS_DRCE_DECAY) drce_ctrl.data.decay = self->drce_state.decay; - if (copy_to_user(argp, &drce_ctrl, + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, sizeof(struct tas_drce_ctrl_t))) { return -EFAULT; } @@ -943,7 +952,6 @@ tas3004_device_ioctl( struct tas3004_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: @@ -954,11 +962,11 @@ tas3004_device_ioctl( struct tas3004_data_t *self, return tas3004_eq_list_rw(self, cmd, arg); case TAS_READ_EQ_FILTER_COUNT: - put_user(TAS3004_BIQUAD_FILTER_COUNT, argp); + put_user(TAS3004_BIQUAD_FILTER_COUNT, (uint *)(arg)); return 0; case TAS_READ_EQ_CHANNEL_COUNT: - put_user(TAS3004_BIQUAD_CHANNEL_COUNT, argp); + put_user(TAS3004_BIQUAD_CHANNEL_COUNT, (uint *)(arg)); return 0; case TAS_READ_DRCE: @@ -973,7 +981,7 @@ tas3004_device_ioctl( struct tas3004_data_t *self, TAS_DRCE_ENERGY | TAS_DRCE_ATTACK | TAS_DRCE_DECAY, - argp); + (uint *)(arg)); return 0; case TAS_READ_DRCE_MIN: @@ -981,7 +989,8 @@ tas3004_device_ioctl( struct tas3004_data_t *self, struct tas_drce_ctrl_t drce_ctrl; const struct tas_drce_t *drce_copy; - if (copy_from_user(&drce_ctrl, argp, + if (copy_from_user((void *)&drce_ctrl, + (const void *)arg, sizeof(struct tas_drce_ctrl_t))) { return -EFAULT; } @@ -1011,7 +1020,8 @@ tas3004_device_ioctl( struct tas3004_data_t *self, drce_ctrl.data.decay=drce_copy->decay; } - if (copy_to_user(argp, &drce_ctrl, + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, sizeof(struct tas_drce_ctrl_t))) { return -EFAULT; }