git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
sound
/
oss
/
dmasound
/
tas3001c.c
diff --git
a/sound/oss/dmasound/tas3001c.c
b/sound/oss/dmasound/tas3001c.c
index
f8ddd3e
..
2f21a3c
100644
(file)
--- a/
sound/oss/dmasound/tas3001c.c
+++ b/
sound/oss/dmasound/tas3001c.c
@@
-50,6
+50,7
@@
struct tas3001c_data_t {
int output_id;
int speaker_id;
struct tas_drce_t drce_state;
int output_id;
int speaker_id;
struct tas_drce_t drce_state;
+ struct work_struct change;
};
};
@@
-452,8
+453,9
@@
tas3001c_eq_rw( struct tas3001c_data_t *self,
{
int rc;
struct tas_biquad_ctrl_t biquad;
{
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;
}
return -EFAULT;
}
@@
-466,7
+468,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;
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;
}
return -EFAULT;
}
@@
-485,27
+487,21
@@
tas3001c_eq_list_rw( struct tas3001c_data_t *self,
int i,j;
char sync_required[2][6];
struct tas_biquad_ctrl_t biquad;
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));
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;
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;
return -EFAULT;
- }
if (cmd & SIOC_IN) {
}
for (i=0; i < filter_count; i++) {
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;
}
sizeof(struct tas_biquad_ctrl_t))) {
return -EFAULT;
}
@@
-520,8
+516,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;
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;
}
sizeof(struct tas_biquad_ctrl_t))) {
return -EFAULT;
}
@@
-596,12
+591,10
@@
tas3001c_drce_rw( struct tas3001c_data_t *self,
{
int rc;
struct tas_drce_ctrl_t drce_ctrl;
{
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;
return -EFAULT;
- }
#ifdef DEBUG_DRCE
printk("DRCE IOCTL: input [ FLAGS:%x ENABLE:%x THRESH:%x\n",
#ifdef DEBUG_DRCE
printk("DRCE IOCTL: input [ FLAGS:%x ENABLE:%x THRESH:%x\n",
@@
-623,8
+616,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 (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;
}
sizeof(struct tas_drce_ctrl_t))) {
return -EFAULT;
}
@@
-676,14
+668,13
@@
tas3001c_update_device_parameters(struct tas3001c_data_t *self)
}
static void
}
static void
-tas3001c_device_change_handler(
void *self
)
+tas3001c_device_change_handler(
struct work_struct *work
)
{
{
- if (self)
- tas3001c_update_device_parameters(self);
+ struct tas3001c_data_t *self;
+ self = container_of(work, struct tas3001c_data_t, change);
+ tas3001c_update_device_parameters(self);
}
}
-static struct work_struct device_change;
-
static int
tas3001c_output_device_change( struct tas3001c_data_t *self,
int device_id,
static int
tas3001c_output_device_change( struct tas3001c_data_t *self,
int device_id,
@@
-694,7
+685,7
@@
tas3001c_output_device_change( struct tas3001c_data_t *self,
self->output_id=output_id;
self->speaker_id=speaker_id;
self->output_id=output_id;
self->speaker_id=speaker_id;
- schedule_work(&
device_
change);
+ schedule_work(&
self->
change);
return 0;
}
return 0;
}
@@
-703,6
+694,7
@@
tas3001c_device_ioctl( struct tas3001c_data_t *self,
u_int cmd,
u_long arg)
{
u_int cmd,
u_long arg)
{
+ uint __user *argp = (void __user *)arg;
switch (cmd) {
case TAS_READ_EQ:
case TAS_WRITE_EQ:
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:
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:
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:
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:
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;
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;
}
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;
}
sizeof(struct tas_drce_ctrl_t))) {
return -EFAULT;
}
@@
-833,7
+823,7
@@
tas3001c_init(struct i2c_client *client)
tas3001c_write_biquad_shadow(self, i, j,
&tas3001c_eq_unity);
tas3001c_write_biquad_shadow(self, i, j,
&tas3001c_eq_unity);
- INIT_WORK(&
device_change, tas3001c_device_change_handler, self
);
+ INIT_WORK(&
self->change, tas3001c_device_change_handler
);
return 0;
}
return 0;
}