X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Foss%2Fbtaudio.c;h=0d76e7889202d22d3ae5a9e77564bc20532514fd;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=c8866da61936468075abc69dd3b42785c4f81183;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/sound/oss/btaudio.c b/sound/oss/btaudio.c index c8866da61..0d76e7889 100644 --- a/sound/oss/btaudio.c +++ b/sound/oss/btaudio.c @@ -327,6 +327,7 @@ static int btaudio_mixer_ioctl(struct inode *inode, struct file *file, { struct btaudio *bta = file->private_data; int ret,val=0,i=0; + void __user *argp = (void __user *)arg; if (cmd == SOUND_MIXER_INFO) { mixer_info info; @@ -334,7 +335,7 @@ static int btaudio_mixer_ioctl(struct inode *inode, struct file *file, strlcpy(info.id,"bt878",sizeof(info.id)); strlcpy(info.name,"Brooktree Bt878 audio",sizeof(info.name)); info.modify_counter = bta->mixcount; - if (copy_to_user((void *)arg, &info, sizeof(info))) + if (copy_to_user(argp, &info, sizeof(info))) return -EFAULT; return 0; } @@ -343,16 +344,16 @@ static int btaudio_mixer_ioctl(struct inode *inode, struct file *file, memset(&info,0,sizeof(info)); strlcpy(info.id,"bt878",sizeof(info.id)-1); strlcpy(info.name,"Brooktree Bt878 audio",sizeof(info.name)); - if (copy_to_user((void *)arg, &info, sizeof(info))) + if (copy_to_user(argp, &info, sizeof(info))) return -EFAULT; return 0; } if (cmd == OSS_GETVERSION) - return put_user(SOUND_VERSION, (int *)arg); + return put_user(SOUND_VERSION, (int __user *)argp); /* read */ if (_SIOC_DIR(cmd) & _SIOC_WRITE) - if (get_user(val, (int *)arg)) + if (get_user(val, (int __user *)argp)) return -EFAULT; switch (cmd) { @@ -421,7 +422,7 @@ static int btaudio_mixer_ioctl(struct inode *inode, struct file *file, default: return -EINVAL; } - if (put_user(ret, (int *)arg)) + if (put_user(ret, (int __user *)argp)) return -EFAULT; return 0; } @@ -503,7 +504,7 @@ static int btaudio_dsp_release(struct inode *inode, struct file *file) return 0; } -static ssize_t btaudio_dsp_read(struct file *file, char *buffer, +static ssize_t btaudio_dsp_read(struct file *file, char __user *buffer, size_t swcount, loff_t *ppos) { struct btaudio *bta = file->private_data; @@ -554,7 +555,7 @@ static ssize_t btaudio_dsp_read(struct file *file, char *buffer, } else if (!bta->analog) { /* stereo => mono (digital audio) */ __s16 *src = (__s16*)(bta->buf_cpu + bta->read_offset); - __s16 *dst = (__s16*)(buffer + ret); + __s16 __user *dst = (__s16 __user *)(buffer + ret); __s16 avg; int n = ndst>>1; if (0 != verify_area(VERIFY_WRITE,dst,ndst)) { @@ -565,13 +566,13 @@ static ssize_t btaudio_dsp_read(struct file *file, char *buffer, for (; n; n--, dst++) { avg = (__s16)le16_to_cpu(*src) / 2; src++; avg += (__s16)le16_to_cpu(*src) / 2; src++; - __put_user(cpu_to_le16(avg),(__u16*)(dst)); + __put_user(cpu_to_le16(avg),dst); } } else if (8 == bta->bits) { /* copy + byte downsampling (audio A/D) */ __u8 *src = bta->buf_cpu + bta->read_offset; - __u8 *dst = buffer + ret; + __u8 __user *dst = buffer + ret; int n = ndst; if (0 != verify_area(VERIFY_WRITE,dst,ndst)) { if (0 == ret) @@ -579,12 +580,12 @@ static ssize_t btaudio_dsp_read(struct file *file, char *buffer, break; } for (; n; n--, src += (1 << bta->sampleshift), dst++) - __put_user(*src,(__u8*)(dst)); + __put_user(*src, dst); } else { /* copy + word downsampling (audio A/D) */ __u16 *src = (__u16*)(bta->buf_cpu + bta->read_offset); - __u16 *dst = (__u16*)(buffer + ret); + __u16 __user *dst = (__u16 __user *)(buffer + ret); int n = ndst>>1; if (0 != verify_area(VERIFY_WRITE,dst,ndst)) { if (0 == ret) @@ -592,7 +593,7 @@ static ssize_t btaudio_dsp_read(struct file *file, char *buffer, break; } for (; n; n--, src += (1 << bta->sampleshift), dst++) - __put_user(*src,(__u16*)(dst)); + __put_user(*src, dst); } ret += ndst; @@ -609,7 +610,7 @@ static ssize_t btaudio_dsp_read(struct file *file, char *buffer, return ret; } -static ssize_t btaudio_dsp_write(struct file *file, const char *buffer, +static ssize_t btaudio_dsp_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { return -EINVAL; @@ -620,15 +621,17 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, { struct btaudio *bta = file->private_data; int s, i, ret, val = 0; + void __user *argp = (void __user *)arg; + int __user *p = argp; switch (cmd) { case OSS_GETVERSION: - return put_user(SOUND_VERSION, (int *)arg); + return put_user(SOUND_VERSION, p); case SNDCTL_DSP_GETCAPS: return 0; case SNDCTL_DSP_SPEED: - if (get_user(val, (int*)arg)) + if (get_user(val, p)) return -EFAULT; if (bta->analog) { for (s = 0; s < 16; s++) @@ -656,14 +659,14 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, /* fall through */ case SOUND_PCM_READ_RATE: if (bta->analog) { - return put_user(HWBASE_AD*4/bta->decimation>>bta->sampleshift, (int*)arg); + return put_user(HWBASE_AD*4/bta->decimation>>bta->sampleshift, p); } else { - return put_user(bta->rate, (int*)arg); + return put_user(bta->rate, p); } case SNDCTL_DSP_STEREO: if (!bta->analog) { - if (get_user(val, (int*)arg)) + if (get_user(val, p)) return -EFAULT; bta->channels = (val > 0) ? 2 : 1; bta->sampleshift = (bta->channels == 2) ? 0 : 1; @@ -681,11 +684,11 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, "btaudio: stereo=0 channels=1\n"); } } - return put_user((bta->channels)-1, (int *)arg); + return put_user((bta->channels)-1, p); case SNDCTL_DSP_CHANNELS: if (!bta->analog) { - if (get_user(val, (int*)arg)) + if (get_user(val, p)) return -EFAULT; bta->channels = (val > 1) ? 2 : 1; bta->sampleshift = (bta->channels == 2) ? 0 : 1; @@ -696,16 +699,16 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, } /* fall through */ case SOUND_PCM_READ_CHANNELS: - return put_user(bta->channels, (int *)arg); + return put_user(bta->channels, p); case SNDCTL_DSP_GETFMTS: /* Returns a mask */ if (bta->analog) - return put_user(AFMT_S16_LE|AFMT_S8, (int*)arg); + return put_user(AFMT_S16_LE|AFMT_S8, p); else - return put_user(AFMT_S16_LE, (int*)arg); + return put_user(AFMT_S16_LE, p); case SNDCTL_DSP_SETFMT: /* Selects ONE fmt*/ - if (get_user(val, (int*)arg)) + if (get_user(val, p)) return -EFAULT; if (val != AFMT_QUERY) { if (bta->analog) @@ -722,10 +725,10 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, if (debug) printk(KERN_DEBUG "btaudio: fmt: bits=%d\n",bta->bits); return put_user((bta->bits==16) ? AFMT_S16_LE : AFMT_S8, - (int*)arg); + p); break; case SOUND_PCM_READ_BITS: - return put_user(bta->bits, (int*)arg); + return put_user(bta->bits, p); case SNDCTL_DSP_NONBLOCK: file->f_flags |= O_NONBLOCK; @@ -745,7 +748,7 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, if (0 != (ret = make_risc(bta))) return ret; } - return put_user(bta->block_bytes>>bta->sampleshift,(int*)arg); + return put_user(bta->block_bytes>>bta->sampleshift,p); case SNDCTL_DSP_SYNC: /* NOP */ @@ -764,7 +767,7 @@ static int btaudio_dsp_ioctl(struct inode *inode, struct file *file, "returns %d/%d/%d/%d\n", info.fragsize, info.fragstotal, info.bytes, info.fragments); - if (copy_to_user((void *)arg, &info, sizeof(info))) + if (copy_to_user(argp, &info, sizeof(info))) return -EFAULT; return 0; } @@ -958,7 +961,7 @@ static int __devinit btaudio_probe(struct pci_dev *pci_dev, /* init hw */ btwrite(0, REG_GPIO_DMA_CTL); btwrite(0, REG_INT_MASK); - btwrite(~0x0UL, REG_INT_STAT); + btwrite(~0U, REG_INT_STAT); pci_set_master(pci_dev); if ((rc = request_irq(bta->irq, btaudio_irq, SA_SHIRQ|SA_INTERRUPT, @@ -1030,7 +1033,7 @@ static void __devexit btaudio_remove(struct pci_dev *pci_dev) /* turn off all DMA / IRQs */ btand(~15, REG_GPIO_DMA_CTL); btwrite(0, REG_INT_MASK); - btwrite(~0x0UL, REG_INT_STAT); + btwrite(~0U, REG_INT_STAT); /* unregister devices */ if (digital) {