X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Fcore%2Fpcm.c;h=d25dad47e6943a96bb05e0a12a9f4dad33d97ea9;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=4f879747d1db930523ba50a4574e218a2d1470ab;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 4f879747d..d25dad47e 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c @@ -55,7 +55,7 @@ static int snd_pcm_control_ioctl(snd_card_t * card, { int device; - if (get_user(device, (int *)arg)) + if (get_user(device, (int __user *)arg)) return -EFAULT; device = device < 0 ? 0 : device + 1; while (device < SNDRV_PCM_DEVICES) { @@ -65,18 +65,19 @@ static int snd_pcm_control_ioctl(snd_card_t * card, } if (device == SNDRV_PCM_DEVICES) device = -1; - if (put_user(device, (int *)arg)) + if (put_user(device, (int __user *)arg)) return -EFAULT; return 0; } case SNDRV_CTL_IOCTL_PCM_INFO: { - snd_pcm_info_t *info = (snd_pcm_info_t *)arg; + snd_pcm_info_t __user *info; unsigned int device, subdevice; snd_pcm_stream_t stream; snd_pcm_t *pcm; snd_pcm_str_t *pstr; snd_pcm_substream_t *substream; + info = (snd_pcm_info_t __user *)arg; if (get_user(device, &info->device)) return -EFAULT; if (device >= SNDRV_PCM_DEVICES) @@ -106,7 +107,7 @@ static int snd_pcm_control_ioctl(snd_card_t * card, { int val; - if (get_user(val, (int *)arg)) + if (get_user(val, (int __user *)arg)) return -EFAULT; control->prefer_pcm_subdevice = val; return 0; @@ -201,37 +202,37 @@ char *snd_pcm_tstamp_mode_names[] = { const char *snd_pcm_stream_name(snd_pcm_stream_t stream) { - snd_assert(stream <= SNDRV_PCM_STREAM_LAST, return 0); + snd_assert(stream <= SNDRV_PCM_STREAM_LAST, return NULL); return snd_pcm_stream_names[stream]; } const char *snd_pcm_access_name(snd_pcm_access_t access) { - snd_assert(access <= SNDRV_PCM_ACCESS_LAST, return 0); + snd_assert(access <= SNDRV_PCM_ACCESS_LAST, return NULL); return snd_pcm_access_names[access]; } const char *snd_pcm_format_name(snd_pcm_format_t format) { - snd_assert(format <= SNDRV_PCM_FORMAT_LAST, return 0); + snd_assert(format <= SNDRV_PCM_FORMAT_LAST, return NULL); return snd_pcm_format_names[format]; } const char *snd_pcm_subformat_name(snd_pcm_subformat_t subformat) { - snd_assert(subformat <= SNDRV_PCM_SUBFORMAT_LAST, return 0); + snd_assert(subformat <= SNDRV_PCM_SUBFORMAT_LAST, return NULL); return snd_pcm_subformat_names[subformat]; } const char *snd_pcm_tstamp_mode_name(snd_pcm_tstamp_t mode) { - snd_assert(mode <= SNDRV_PCM_TSTAMP_LAST, return 0); + snd_assert(mode <= SNDRV_PCM_TSTAMP_LAST, return NULL); return snd_pcm_tstamp_mode_names[mode]; } const char *snd_pcm_state_name(snd_pcm_state_t state) { - snd_assert(state <= SNDRV_PCM_STATE_LAST, return 0); + snd_assert(state <= SNDRV_PCM_STATE_LAST, return NULL); return snd_pcm_state_names[state]; } @@ -584,7 +585,7 @@ int snd_pcm_new_stream(snd_pcm_t *pcm, int stream, int substream_count) } prev = NULL; for (idx = 0, prev = NULL; idx < substream_count; idx++) { - substream = snd_magic_kcalloc(snd_pcm_substream_t, 0, GFP_KERNEL); + substream = kcalloc(1, sizeof(*substream), GFP_KERNEL); if (substream == NULL) return -ENOMEM; substream->pcm = pcm; @@ -599,7 +600,7 @@ int snd_pcm_new_stream(snd_pcm_t *pcm, int stream, int substream_count) prev->next = substream; err = snd_pcm_substream_proc_init(substream); if (err < 0) { - snd_magic_kfree(substream); + kfree(substream); return err; } substream->group = &substream->self_group; @@ -644,7 +645,7 @@ int snd_pcm_new(snd_card_t * card, char *id, int device, snd_assert(rpcm != NULL, return -EINVAL); *rpcm = NULL; snd_assert(card != NULL, return -ENXIO); - pcm = snd_magic_kcalloc(snd_pcm_t, 0, GFP_KERNEL); + pcm = kcalloc(1, sizeof(*pcm), GFP_KERNEL); if (pcm == NULL) return -ENOMEM; pcm->card = card; @@ -680,7 +681,7 @@ static void snd_pcm_free_stream(snd_pcm_str_t * pstr) while (substream) { substream_next = substream->next; snd_pcm_substream_proc_done(substream); - snd_magic_kfree(substream); + kfree(substream); substream = substream_next; } snd_pcm_stream_proc_done(pstr); @@ -701,13 +702,13 @@ static int snd_pcm_free(snd_pcm_t *pcm) snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_free_stream(&pcm->streams[SNDRV_PCM_STREAM_PLAYBACK]); snd_pcm_free_stream(&pcm->streams[SNDRV_PCM_STREAM_CAPTURE]); - snd_magic_kfree(pcm); + kfree(pcm); return 0; } static int snd_pcm_dev_free(snd_device_t *device) { - snd_pcm_t *pcm = snd_magic_cast(snd_pcm_t, device->device_data, return -ENXIO); + snd_pcm_t *pcm = device->device_data; return snd_pcm_free(pcm); } @@ -782,7 +783,7 @@ int snd_pcm_open_substream(snd_pcm_t *pcm, int stream, if (substream == NULL) return -EAGAIN; - runtime = snd_kcalloc(sizeof(snd_pcm_runtime_t), GFP_KERNEL); + runtime = kcalloc(1, sizeof(*runtime), GFP_KERNEL); if (runtime == NULL) return -ENOMEM; @@ -842,7 +843,7 @@ static int snd_pcm_dev_register(snd_device_t *device) snd_pcm_substream_t *substream; struct list_head *list; char str[16]; - snd_pcm_t *pcm = snd_magic_cast(snd_pcm_t, device->device_data, return -ENXIO); + snd_pcm_t *pcm = device->device_data; snd_assert(pcm != NULL && device != NULL, return -ENXIO); down(®ister_mutex); @@ -887,7 +888,7 @@ static int snd_pcm_dev_register(snd_device_t *device) static int snd_pcm_dev_disconnect(snd_device_t *device) { - snd_pcm_t *pcm = snd_magic_cast(snd_pcm_t, device->device_data, return -ENXIO); + snd_pcm_t *pcm = device->device_data; struct list_head *list; snd_pcm_substream_t *substream; int idx, cidx; @@ -913,7 +914,7 @@ static int snd_pcm_dev_unregister(snd_device_t *device) int idx, cidx, devtype; snd_pcm_substream_t *substream; struct list_head *list; - snd_pcm_t *pcm = snd_magic_cast(snd_pcm_t, device->device_data, return -ENXIO); + snd_pcm_t *pcm = device->device_data; snd_assert(pcm != NULL, return -ENXIO); down(®ister_mutex); @@ -1049,6 +1050,9 @@ EXPORT_SYMBOL(snd_pcm_release); EXPORT_SYMBOL(snd_pcm_playback_poll); EXPORT_SYMBOL(snd_pcm_capture_poll); EXPORT_SYMBOL(snd_pcm_mmap_data); +#if SNDRV_PCM_INFO_MMAP_IOMEM +EXPORT_SYMBOL(snd_pcm_lib_mmap_iomem); +#endif /* pcm_misc.c */ EXPORT_SYMBOL(snd_pcm_format_signed); EXPORT_SYMBOL(snd_pcm_format_unsigned);