X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Foss%2Fdmasound%2Ftas3001c.c;h=f8ddd3e4def7d1ae4c02b3064f6ebc7ec86d8192;hb=90ad8654ffeb336af8c878fdf7bc72e2ac72467a;hp=f227c9f688ccb25b8ced4e6ae514652240541b95;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/sound/oss/dmasound/tas3001c.c b/sound/oss/dmasound/tas3001c.c index f227c9f68..f8ddd3e4d 100644 --- a/sound/oss/dmasound/tas3001c.c +++ b/sound/oss/dmasound/tas3001c.c @@ -452,9 +452,8 @@ 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(&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; } @@ -467,7 +466,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(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; } @@ -486,21 +485,27 @@ 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(&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; } @@ -515,7 +520,8 @@ 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(&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; } @@ -590,10 +596,12 @@ 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(&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 IOCTL: input [ FLAGS:%x ENABLE:%x THRESH:%x\n", @@ -615,7 +623,8 @@ 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(argp, &drce_ctrl, + if (copy_to_user((void *)arg, + (const void *)&drce_ctrl, sizeof(struct tas_drce_ctrl_t))) { return -EFAULT; } @@ -694,7 +703,6 @@ 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: @@ -705,11 +713,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, argp); + put_user(TAS3001C_BIQUAD_FILTER_COUNT, (uint *)(arg)); return 0; case TAS_READ_EQ_CHANNEL_COUNT: - put_user(TAS3001C_BIQUAD_CHANNEL_COUNT, argp); + put_user(TAS3001C_BIQUAD_CHANNEL_COUNT, (uint *)(arg)); return 0; case TAS_READ_DRCE: @@ -717,14 +725,15 @@ 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, argp); + put_user(TAS_DRCE_ENABLE | TAS_DRCE_THRESHOLD, (uint *)(arg)); return 0; case TAS_READ_DRCE_MIN: case TAS_READ_DRCE_MAX: { struct tas_drce_ctrl_t drce_ctrl; - 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; } @@ -737,7 +746,8 @@ tas3001c_device_ioctl( struct tas3001c_data_t *self, } } - 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; }