diff options
author | Alexander Viro <viro@www.linux.org.uk> | 2004-06-03 05:39:22 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-03 05:39:22 -0700 |
commit | d361e46c25b7ce32ad8b32dae43bc861790c226e (patch) | |
tree | 49a11618b6e48e4dccdbfa3bd022d4be3ba6354e /sound | |
parent | c55cab848583a831fd6cc7e01b65f7d5fb46efe4 (diff) | |
download | history-d361e46c25b7ce32ad8b32dae43bc861790c226e.tar.gz |
[PATCH] sparse: rme96xx annotation
rme96xx annotated
Diffstat (limited to 'sound')
-rw-r--r-- | sound/oss/rme96xx.c | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/sound/oss/rme96xx.c b/sound/oss/rme96xx.c index 9e966932095277..404ba23b159220 100644 --- a/sound/oss/rme96xx.c +++ b/sound/oss/rme96xx.c @@ -661,13 +661,13 @@ inline int rme96xx_getispace(struct dmabuf * dma, unsigned int hwp) } -inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count,int hop) +inline int rme96xx_copyfromuser(struct dmabuf* dma,const char __user * buffer,int count,int hop) { int swptr = dma->writeptr; switch (dma->format) { case AFMT_S32_BLOCKED: { - char* buf = (char*)buffer; + char __user * buf = (char __user *)buffer; int cnt = count/dma->outchannels; int i; for (i=0;i < dma->outchannels;i++) { @@ -686,7 +686,7 @@ inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count, int i,j; int cnt = count/dma->outchannels; for (i=0;i < dma->outchannels + dma->mono;i++) { - short* sbuf = (short*)buffer + i*(!dma->mono); + short __user * sbuf = (short __user *)buffer + i*(!dma->mono); short* hwbuf =(short*) &dma->s->playbuf[(dma->outoffset + i)*RME96xx_DMA_MAX_SAMPLES]; hwbuf+=(swptr>>1); for (j=0;j<(cnt>>1);j++) { @@ -710,13 +710,13 @@ inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count, } /* The count argument is the number of bytes */ -inline int rme96xx_copytouser(struct dmabuf* dma,const char* buffer,int count,int hop) +inline int rme96xx_copytouser(struct dmabuf* dma,const char __user* buffer,int count,int hop) { int swptr = dma->readptr; switch (dma->format) { case AFMT_S32_BLOCKED: { - char* buf = (char*)buffer; + char __user * buf = (char __user *)buffer; int cnt = count/dma->inchannels; int i; @@ -736,7 +736,7 @@ inline int rme96xx_copytouser(struct dmabuf* dma,const char* buffer,int count,in int i,j; int cnt = count/dma->inchannels; for (i=0;i < dma->inchannels;i++) { - short* sbuf = (short*)buffer + i; + short __user * sbuf = (short __user *)buffer + i; short* hwbuf =(short*) &dma->s->recbuf[(dma->inoffset + i)*RME96xx_DMA_MAX_SAMPLES]; hwbuf+=(swptr>>1); for (j=0;j<(cnt>>1);j++) { @@ -1121,7 +1121,6 @@ module_exit(cleanup_rme96xx); static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, unsigned long arg) { - struct dmabuf * dma = (struct dmabuf *)file->private_data; rme96xx_info *s = dma->s; unsigned long flags; @@ -1129,6 +1128,8 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, count_info cinfo; int count; int val = 0; + void __user *argp = (void __user *)arg; + int __user *p = argp; VALIDATE_STATE(s); @@ -1136,7 +1137,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, switch (cmd) { case OSS_GETVERSION: - return put_user(SOUND_VERSION, (int *)arg); + return put_user(SOUND_VERSION, p); case SNDCTL_DSP_SYNC: #if 0 @@ -1149,14 +1150,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, return 0; case SNDCTL_DSP_GETCAPS: - return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | DSP_CAP_TRIGGER | DSP_CAP_MMAP, (int *)arg); + return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | DSP_CAP_TRIGGER | DSP_CAP_MMAP, p); case SNDCTL_DSP_RESET: // rme96xx_clearbufs(dma); return 0; case SNDCTL_DSP_SPEED: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; if (val >= 0) { /* generally it's not a problem if we change the speed @@ -1195,10 +1196,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, spin_unlock_irqrestore(&s->lock, flags); } DBG(printk("speed set to %d\n",val)); - return put_user(val, (int *)arg); + return put_user(val, p); case SNDCTL_DSP_STEREO: /* this plays a mono file on two channels */ - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; if (!val) { @@ -1216,7 +1217,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, return 0; case SNDCTL_DSP_CHANNELS: /* remember to check for resonable offset/channel pairs here */ - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; if (file->f_mode & FMODE_WRITE) { @@ -1236,14 +1237,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, dma->mono=0; - return put_user(val, (int *)arg); + return put_user(val, p); case SNDCTL_DSP_GETFMTS: /* Returns a mask */ - return put_user(RME96xx_FMT, (int *)arg); + return put_user(RME96xx_FMT, p); case SNDCTL_DSP_SETFMT: /* Selects ONE fmt*/ DBG(printk("setting to format %x\n",val)); - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; if (val != AFMT_QUERY) { if (val & RME96xx_FMT) @@ -1257,7 +1258,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, break; } } - return put_user(dma->format, (int *)arg); + return put_user(dma->format, p); case SNDCTL_DSP_POST: return 0; @@ -1270,10 +1271,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, if (file->f_mode & FMODE_WRITE && s->ctrl & CTRL_DAC2_EN) val |= PCM_ENABLE_OUTPUT; #endif - return put_user(val, (int *)arg); + return put_user(val, p); case SNDCTL_DSP_SETTRIGGER: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; #if 0 if (file->f_mode & FMODE_READ) { @@ -1309,7 +1310,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, abinfo.fragstotal = 2; abinfo.fragments = (count > s->fragsize); - return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0; + return copy_to_user(argp, &abinfo, sizeof(abinfo)) ? -EFAULT : 0; case SNDCTL_DSP_GETISPACE: if (!(file->f_mode & FMODE_READ)) @@ -1323,7 +1324,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, abinfo.bytes = (count*dma->inchannels)>>dma->formatshift; abinfo.fragstotal = 2; abinfo.fragments = count > s->fragsize; - return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0; + return copy_to_user(argp, &abinfo, sizeof(abinfo)) ? -EFAULT : 0; case SNDCTL_DSP_NONBLOCK: file->f_flags |= O_NONBLOCK; @@ -1339,7 +1340,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, if (count < 0) count += s->fragsize<<1; - return put_user(count, (int *)arg); + return put_user(count, p); /* check out how to use mmaped mode (can only be blocked !!!) */ @@ -1359,7 +1360,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, dma->readptr &= s->fragsize<<1; spin_unlock_irqrestore(&s->lock,flags); - if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo))) + if (copy_to_user(argp, &cinfo, sizeof(cinfo))) return -EFAULT; return 0; @@ -1378,14 +1379,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, if (dma->mmapped) dma->writeptr &= s->fragsize<<1; spin_unlock_irqrestore(&s->lock,flags); - if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo))) + if (copy_to_user(argp, &cinfo, sizeof(cinfo))) return -EFAULT; return 0; case SNDCTL_DSP_GETBLKSIZE: - return put_user(s->fragsize, (int *)arg); + return put_user(s->fragsize, p); case SNDCTL_DSP_SETFRAGMENT: - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; val&=0xffff; val -= 7; @@ -1399,7 +1400,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, if ((file->f_mode & FMODE_READ && s->dma_adc.subdivision) || (file->f_mode & FMODE_WRITE && s->dma_dac2.subdivision)) return -EINVAL; - if (get_user(val, (int *)arg)) + if (get_user(val, p)) return -EFAULT; if (val != 1 && val != 2 && val != 4) return -EINVAL; @@ -1413,10 +1414,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, case SOUND_PCM_READ_RATE: /* HP20020201 */ s->rate = rme96xx_get_sample_rate_status(s); - return put_user(s->rate, (int *)arg); + return put_user(s->rate, p); case SOUND_PCM_READ_CHANNELS: - return put_user(dma->outchannels, (int *)arg); + return put_user(dma->outchannels, p); case SOUND_PCM_READ_BITS: switch (dma->format) { @@ -1427,7 +1428,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, val = 16; break; } - return put_user(val, (int *)arg); + return put_user(val, p); case SOUND_PCM_WRITE_FILTER: case SNDCTL_DSP_SETSYNCRO: @@ -1529,7 +1530,7 @@ static int rme96xx_release(struct inode *in, struct file *file) } -static ssize_t rme96xx_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) +static ssize_t rme96xx_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { struct dmabuf *dma = (struct dmabuf *)file->private_data; ssize_t ret = 0; @@ -1597,7 +1598,7 @@ static ssize_t rme96xx_write(struct file *file, const char *buffer, size_t count return ret; } -static ssize_t rme96xx_read(struct file *file, char *buffer, size_t count, loff_t *ppos) +static ssize_t rme96xx_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) { struct dmabuf *dma = (struct dmabuf *)file->private_data; ssize_t ret = 0; @@ -1793,6 +1794,8 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned rme96xx_info *s = (rme96xx_info *)file->private_data; u32 status; int spdifrate; + void __user *argp = (void __user *)arg; + int __user *p = argp; status = readl(s->iobase + RME96xx_status_register); /* hack to convert rev 1.5 SPDIF rate to "crystalrate" format HP 20020201 */ @@ -1802,7 +1805,7 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned VALIDATE_STATE(s); if (cmd == SOUND_MIXER_PRIVATE1) { rme_mixer mixer; - if (copy_from_user(&mixer,(void*)arg,sizeof(mixer))) + if (copy_from_user(&mixer,argp,sizeof(mixer))) return -EFAULT; mixer.devnr &= RME96xx_MASK_DEVS; @@ -1825,14 +1828,14 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned mixer.o_offset = s->dma[mixer.devnr].outoffset; mixer.i_offset = s->dma[mixer.devnr].inoffset; - return copy_to_user((void *)arg, &mixer, sizeof(mixer)) ? -EFAULT : 0; + return copy_to_user(argp, &mixer, sizeof(mixer)) ? -EFAULT : 0; } if (cmd == SOUND_MIXER_PRIVATE2) { - return put_user(status, (int *)arg); + return put_user(status, p); } if (cmd == SOUND_MIXER_PRIVATE3) { u32 control; - if (copy_from_user(&control,(void*)arg,sizeof(control))) + if (copy_from_user(&control,argp,sizeof(control))) return -EFAULT; if (file->f_mode & FMODE_WRITE) { s->control_register &= ~RME96xx_mixer_allowed; @@ -1840,7 +1843,7 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned writel(control,s->iobase + RME96xx_control_register); } - return put_user(s->control_register, (int *)arg); + return put_user(s->control_register, p); } return -1; } |