vserver 1.9.3
[linux-2.6.git] / sound / core / pcm.c
index 4f87974..d25dad4 100644 (file)
@@ -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(&register_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(&register_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);