X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Foss%2Fpas2_pcm.c;h=4af6aafa3d862304d85ab611d16ad71a032c593e;hb=d939d46ba7caa14e960be18e18f5c07be8806d7a;hp=6805962afe5da33b54bd527d2feebb6d45086273;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/sound/oss/pas2_pcm.c b/sound/oss/pas2_pcm.c index 6805962af..4af6aafa3 100644 --- a/sound/oss/pas2_pcm.c +++ b/sound/oss/pas2_pcm.c @@ -17,6 +17,7 @@ #include #include +#include #include "sound_config.h" #include "pas2.h" @@ -62,13 +63,13 @@ static int pcm_set_speed(int arg) if (pcm_channels & 2) { - foo = (596590 + (arg / 2)) / arg; - arg = (596590 + (foo / 2)) / foo; + foo = ((CLOCK_TICK_RATE / 2) + (arg / 2)) / arg; + arg = ((CLOCK_TICK_RATE / 2) + (foo / 2)) / foo; } else { - foo = (1193180 + (arg / 2)) / arg; - arg = (1193180 + (foo / 2)) / foo; + foo = (CLOCK_TICK_RATE + (arg / 2)) / arg; + arg = (CLOCK_TICK_RATE + (foo / 2)) / foo; } pcm_speed = arg; @@ -150,16 +151,17 @@ static int pcm_set_bits(int arg) return pcm_bits; } -static int pas_audio_ioctl(int dev, unsigned int cmd, caddr_t arg) +static int pas_audio_ioctl(int dev, unsigned int cmd, void __user *arg) { int val, ret; + int __user *p = arg; DEB(printk("pas2_pcm.c: static int pas_audio_ioctl(unsigned int cmd = %X, unsigned int arg = %X)\n", cmd, arg)); switch (cmd) { case SOUND_PCM_WRITE_RATE: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; ret = pcm_set_speed(val); break; @@ -169,13 +171,13 @@ static int pas_audio_ioctl(int dev, unsigned int cmd, caddr_t arg) break; case SNDCTL_DSP_STEREO: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; ret = pcm_set_channels(val + 1) - 1; break; case SOUND_PCM_WRITE_CHANNELS: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; ret = pcm_set_channels(val); break; @@ -185,7 +187,7 @@ static int pas_audio_ioctl(int dev, unsigned int cmd, caddr_t arg) break; case SNDCTL_DSP_SETFMT: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; ret = pcm_set_bits(val); break; @@ -197,7 +199,7 @@ static int pas_audio_ioctl(int dev, unsigned int cmd, caddr_t arg) default: return -EINVAL; } - return put_user(ret, (int *)arg); + return put_user(ret, p); } static void pas_audio_reset(int dev)