diff options
author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2004-06-03 05:37:43 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-03 05:37:43 -0700 |
commit | 2996867de4d3364faa637d85644b108c9e68d4d7 (patch) | |
tree | 643f7e445f5db0539d239ab657dc1bc70680e8e7 /sound | |
parent | 2b7485b46e34084b5374c85050378ff47020b221 (diff) | |
download | history-2996867de4d3364faa637d85644b108c9e68d4d7.tar.gz |
[PATCH] sparse: trident annotation
Both ALSA and OSS variants
Diffstat (limited to 'sound')
-rw-r--r-- | sound/oss/trident.c | 72 | ||||
-rw-r--r-- | sound/pci/trident/trident_memory.c | 2 | ||||
-rw-r--r-- | sound/pci/trident/trident_synth.c | 4 |
3 files changed, 40 insertions, 38 deletions
diff --git a/sound/oss/trident.c b/sound/oss/trident.c index e5e14cf5c6d340..ed04f4007c2d0f 100644 --- a/sound/oss/trident.c +++ b/sound/oss/trident.c @@ -497,7 +497,8 @@ static void ali_setup_spdif_in(struct trident_card *card); static void ali_disable_spdif_in(struct trident_card *card); static void ali_disable_special_channel(struct trident_card *card, int ch); static void ali_setup_spdif_out(struct trident_card *card, int flag); -static int ali_write_5_1(struct trident_state *state, const char *buffer, +static int ali_write_5_1(struct trident_state *state, + const char __user *buffer, int cnt_for_multi_channel, unsigned int *copy_count, unsigned int *state_cnt); static int ali_allocate_other_states_resources(struct trident_state *state, @@ -1861,7 +1862,7 @@ trident_interrupt(int irq, void *dev_id, struct pt_regs *regs) /* to be copied to the user's buffer. it is filled by the dma machine and */ /* drained by this loop. */ static ssize_t -trident_read(struct file *file, char *buffer, size_t count, loff_t * ppos) +trident_read(struct file *file, char __user *buffer, size_t count, loff_t * ppos) { struct trident_state *state = (struct trident_state *)file->private_data; struct dmabuf *dmabuf = &state->dmabuf; @@ -1976,7 +1977,7 @@ out: the soundcard. it is drained by the dma machine and filled by this loop. */ static ssize_t -trident_write(struct file *file, const char *buffer, size_t count, loff_t * ppos) +trident_write(struct file *file, const char __user *buffer, size_t count, loff_t * ppos) { struct trident_state *state = (struct trident_state *)file->private_data; struct dmabuf *dmabuf = &state->dmabuf; @@ -2247,8 +2248,9 @@ trident_ioctl(struct inode *inode, struct file *file, audio_buf_info abinfo; count_info cinfo; int val, mapped, ret = 0; - struct trident_card *card = state->card; + void __user *argp = (void __user *)arg; + int __user *p = argp; VALIDATE_STATE(state); @@ -2256,11 +2258,11 @@ trident_ioctl(struct inode *inode, struct file *file, mapped = ((file->f_mode & (FMODE_WRITE | FMODE_READ)) && dmabuf->mapped); pr_debug("trident: trident_ioctl, command = %2d, arg = 0x%08x\n", - _IOC_NR(cmd), arg ? *(int *) arg : 0); + _IOC_NR(cmd), arg ? *p : 0); switch (cmd) { case OSS_GETVERSION: - ret = put_user(SOUND_VERSION, (int *) arg); + ret = put_user(SOUND_VERSION, p); break; case SNDCTL_DSP_RESET: @@ -2287,7 +2289,7 @@ trident_ioctl(struct inode *inode, struct file *file, break; case SNDCTL_DSP_SPEED: /* set smaple rate */ - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2307,11 +2309,11 @@ trident_ioctl(struct inode *inode, struct file *file, spin_unlock_irqrestore(&state->card->lock, flags); } } - ret = put_user(dmabuf->rate, (int *) arg); + ret = put_user(dmabuf->rate, p); break; case SNDCTL_DSP_STEREO: /* set stereo or mono channel */ - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2342,14 +2344,14 @@ trident_ioctl(struct inode *inode, struct file *file, if ((val = prog_dmabuf_playback(state))) ret = val; else - ret = put_user(dmabuf->fragsize, (int *) arg); + ret = put_user(dmabuf->fragsize, p); break; } if (file->f_mode & FMODE_READ) { if ((val = prog_dmabuf_record(state))) ret = val; else - ret = put_user(dmabuf->fragsize, (int *) arg); + ret = put_user(dmabuf->fragsize, p); break; } /* neither READ nor WRITE? is this even possible? */ @@ -2359,11 +2361,11 @@ trident_ioctl(struct inode *inode, struct file *file, case SNDCTL_DSP_GETFMTS: /* Returns a mask of supported sample format */ ret = put_user(AFMT_S16_LE | AFMT_U16_LE | AFMT_S8 | - AFMT_U8, (int *) arg); + AFMT_U8, p); break; case SNDCTL_DSP_SETFMT: /* Select sample format */ - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2390,11 +2392,11 @@ trident_ioctl(struct inode *inode, struct file *file, } unlock_set_fmt(state); ret = put_user((dmabuf->fmt & TRIDENT_FMT_16BIT) ? AFMT_S16_LE : - AFMT_U8, (int *) arg); + AFMT_U8, p); break; case SNDCTL_DSP_CHANNELS: - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2458,7 +2460,7 @@ trident_ioctl(struct inode *inode, struct file *file, } unlock_set_fmt(state); } - ret = put_user(val, (int *) arg); + ret = put_user(val, p); break; case SNDCTL_DSP_POST: @@ -2470,7 +2472,7 @@ trident_ioctl(struct inode *inode, struct file *file, ret = -EINVAL; break; } - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2482,7 +2484,7 @@ trident_ioctl(struct inode *inode, struct file *file, break; case SNDCTL_DSP_SETFRAGMENT: - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2514,7 +2516,7 @@ trident_ioctl(struct inode *inode, struct file *file, abinfo.fragstotal = dmabuf->numfrag; abinfo.fragments = abinfo.bytes >> dmabuf->fragshift; spin_unlock_irqrestore(&state->card->lock, flags); - ret = copy_to_user((void *) arg, &abinfo, sizeof (abinfo)) ? + ret = copy_to_user(argp, &abinfo, sizeof (abinfo)) ? -EFAULT : 0; break; @@ -2534,7 +2536,7 @@ trident_ioctl(struct inode *inode, struct file *file, abinfo.fragstotal = dmabuf->numfrag; abinfo.fragments = abinfo.bytes >> dmabuf->fragshift; spin_unlock_irqrestore(&state->card->lock, flags); - ret = copy_to_user((void *) arg, &abinfo, sizeof (abinfo)) ? + ret = copy_to_user(argp, &abinfo, sizeof (abinfo)) ? -EFAULT : 0; break; @@ -2544,7 +2546,7 @@ trident_ioctl(struct inode *inode, struct file *file, case SNDCTL_DSP_GETCAPS: ret = put_user(DSP_CAP_REALTIME | DSP_CAP_TRIGGER | - DSP_CAP_MMAP | DSP_CAP_BIND, (int *) arg); + DSP_CAP_MMAP | DSP_CAP_BIND, p); break; case SNDCTL_DSP_GETTRIGGER: @@ -2553,11 +2555,11 @@ trident_ioctl(struct inode *inode, struct file *file, val |= PCM_ENABLE_INPUT; if ((file->f_mode & FMODE_WRITE) && dmabuf->enable) val |= PCM_ENABLE_OUTPUT; - ret = put_user(val, (int *) arg); + ret = put_user(val, p); break; case SNDCTL_DSP_SETTRIGGER: - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2599,7 +2601,7 @@ trident_ioctl(struct inode *inode, struct file *file, if (dmabuf->mapped) dmabuf->count &= dmabuf->fragsize - 1; spin_unlock_irqrestore(&state->card->lock, flags); - ret = copy_to_user((void *) arg, &cinfo, sizeof (cinfo)) ? + ret = copy_to_user(argp, &cinfo, sizeof (cinfo)) ? -EFAULT : 0; break; @@ -2622,7 +2624,7 @@ trident_ioctl(struct inode *inode, struct file *file, if (dmabuf->mapped) dmabuf->count &= dmabuf->fragsize - 1; spin_unlock_irqrestore(&state->card->lock, flags); - ret = copy_to_user((void *) arg, &cinfo, sizeof (cinfo)) ? + ret = copy_to_user(argp, &cinfo, sizeof (cinfo)) ? -EFAULT : 0; break; @@ -2643,26 +2645,26 @@ trident_ioctl(struct inode *inode, struct file *file, trident_update_ptr(state); val = dmabuf->count; spin_unlock_irqrestore(&state->card->lock, flags); - ret = put_user(val, (int *) arg); + ret = put_user(val, p); break; case SOUND_PCM_READ_RATE: - ret = put_user(dmabuf->rate, (int *) arg); + ret = put_user(dmabuf->rate, p); break; case SOUND_PCM_READ_CHANNELS: ret = put_user((dmabuf->fmt & TRIDENT_FMT_STEREO) ? 2 : 1, - (int *) arg); + p); break; case SOUND_PCM_READ_BITS: ret = put_user((dmabuf->fmt & TRIDENT_FMT_16BIT) ? AFMT_S16_LE : - AFMT_U8, (int *) arg); + AFMT_U8, p); break; case SNDCTL_DSP_GETCHANNELMASK: ret = put_user(DSP_BIND_FRONT | DSP_BIND_SURR | - DSP_BIND_CENTER_LFE, (int *) arg); + DSP_BIND_CENTER_LFE, p); break; case SNDCTL_DSP_BIND_CHANNEL: @@ -2671,7 +2673,7 @@ trident_ioctl(struct inode *inode, struct file *file, break; } - if (get_user(val, (int *) arg)) { + if (get_user(val, p)) { ret = -EFAULT; break; } @@ -2688,7 +2690,7 @@ trident_ioctl(struct inode *inode, struct file *file, SRC_ENABLE); dmabuf->channel->attribute |= mask2attr[ffs(val)]; } - ret = put_user(val, (int *) arg); + ret = put_user(val, p); break; case SNDCTL_DSP_MAPINBUF: @@ -3878,14 +3880,14 @@ depend on a master state's DMA, and changing the counters of the master state DMA is protected by a spinlock. */ static int -ali_write_5_1(struct trident_state *state, const char *buf, +ali_write_5_1(struct trident_state *state, const char __user *buf, int cnt_for_multi_channel, unsigned int *copy_count, unsigned int *state_cnt) { struct dmabuf *dmabuf = &state->dmabuf; struct dmabuf *dmabuf_temp; - const char *buffer = buf; + const char __user *buffer = buf; unsigned swptr, other_dma_nums, sample_s; unsigned int i, loop; @@ -4018,7 +4020,7 @@ ali_free_other_states_resources(struct trident_state *state) struct proc_dir_entry *res; static int -ali_write_proc(struct file *file, const char *buffer, unsigned long count, void *data) +ali_write_proc(struct file *file, const char __user *buffer, unsigned long count, void *data) { struct trident_card *card = (struct trident_card *) data; unsigned long flags; diff --git a/sound/pci/trident/trident_memory.c b/sound/pci/trident/trident_memory.c index fdffd3884a38f1..3c79110b5488df 100644 --- a/sound/pci/trident/trident_memory.c +++ b/sound/pci/trident/trident_memory.c @@ -471,7 +471,7 @@ int snd_trident_synth_bzero(trident_t *trident, snd_util_memblk_t *blk, int offs /* * copy_from_user(blk + offset, data, size) */ -int snd_trident_synth_copy_from_user(trident_t *trident, snd_util_memblk_t *blk, int offset, const char *data, int size) +int snd_trident_synth_copy_from_user(trident_t *trident, snd_util_memblk_t *blk, int offset, const char __user *data, int size) { int page, nextofs, end_offset, temp, temp1; diff --git a/sound/pci/trident/trident_synth.c b/sound/pci/trident/trident_synth.c index a2098eab17b5eb..8f9797d79b99e5 100644 --- a/sound/pci/trident/trident_synth.c +++ b/sound/pci/trident/trident_synth.c @@ -504,7 +504,7 @@ static void sample_private1(trident_t * trident, snd_trident_voice_t * voice, un */ static int snd_trident_simple_put_sample(void *private_data, simple_instrument_t * instr, - char *data, long len, int atomic) + char __user *data, long len, int atomic) { trident_t *trident = snd_magic_cast(trident_t, private_data, return -ENXIO); int size = instr->size; @@ -557,7 +557,7 @@ static int snd_trident_simple_put_sample(void *private_data, simple_instrument_t } static int snd_trident_simple_get_sample(void *private_data, simple_instrument_t * instr, - char *data, long len, int atomic) + char __user *data, long len, int atomic) { //trident_t *trident = snd_magic_cast(trident_t, private_data, return -ENXIO); int size = instr->size; |