ALSA: ctxfi - Fix Oops at mmapping
[safe/jmp/linux-2.6] / sound / pci / ctxfi / ctatc.c
index f523450..1a4bb35 100644 (file)
@@ -119,7 +119,6 @@ atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm);
 
 static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 {
-       unsigned long flags;
        struct snd_pcm_runtime *runtime;
        struct ct_vm *vm;
 
@@ -129,9 +128,7 @@ static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
        runtime = apcm->substream->runtime;
        vm = atc->vm;
 
-       spin_lock_irqsave(&atc->vm_lock, flags);
        apcm->vm_block = vm->map(vm, runtime->dma_area, runtime->dma_bytes);
-       spin_unlock_irqrestore(&atc->vm_lock, flags);
 
        if (NULL == apcm->vm_block)
                return -ENOENT;
@@ -141,7 +138,6 @@ static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 
 static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 {
-       unsigned long flags;
        struct ct_vm *vm;
 
        if (NULL == apcm->vm_block)
@@ -149,9 +145,7 @@ static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 
        vm = atc->vm;
 
-       spin_lock_irqsave(&atc->vm_lock, flags);
        vm->unmap(vm, apcm->vm_block);
-       spin_unlock_irqrestore(&atc->vm_lock, flags);
 
        apcm->vm_block = NULL;
 }
@@ -161,9 +155,7 @@ static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index)
        struct ct_vm *vm;
        void *kvirt_addr;
        unsigned long phys_addr;
-       unsigned long flags;
 
-       spin_lock_irqsave(&atc->vm_lock, flags);
        vm = atc->vm;
        kvirt_addr = vm->get_ptp_virt(vm, index);
        if (kvirt_addr == NULL)
@@ -171,8 +163,6 @@ static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index)
        else
                phys_addr = virt_to_phys(kvirt_addr);
 
-       spin_unlock_irqrestore(&atc->vm_lock, flags);
-
        return phys_addr;
 }
 
@@ -191,7 +181,7 @@ static unsigned int convert_format(snd_pcm_format_t snd_format)
        case SNDRV_PCM_FORMAT_S32_LE:
                return SRC_SF_S32;
        default:
-               printk(KERN_ERR "not recognized snd format is %d \n",
+               printk(KERN_ERR "ctxfi: not recognized snd format is %d \n",
                        snd_format);
                return SRC_SF_S16;
        }
@@ -1254,7 +1244,8 @@ static int ct_create_alsa_devs(struct ct_atc *atc)
                err = alsa_dev_funcs[i].create(atc, i,
                                alsa_dev_funcs[i].public_name);
                if (err) {
-                       printk(KERN_ERR "Creating alsa device %d failed!\n", i);
+                       printk(KERN_ERR "ctxfi: "
+                              "Creating alsa device %d failed!\n", i);
                        return err;
                }
        }
@@ -1289,7 +1280,8 @@ static int atc_create_hw_devs(struct ct_atc *atc)
 
                err = rsc_mgr_funcs[i].create(atc->hw, &atc->rsc_mgrs[i]);
                if (err) {
-                       printk(KERN_ERR "Failed to create rsc_mgr %d!!!\n", i);
+                       printk(KERN_ERR "ctxfi: "
+                              "Failed to create rsc_mgr %d!!!\n", i);
                        return err;
                }
        }
@@ -1333,7 +1325,7 @@ static int atc_get_resources(struct ct_atc *atc)
                err = daio_mgr->get_daio(daio_mgr, &da_desc,
                                        (struct daio **)&atc->daios[i]);
                if (err) {
-                       printk(KERN_ERR "Failed to get DAIO "
+                       printk(KERN_ERR "ctxfi: Failed to get DAIO "
                                        "resource %d!!!\n", i);
                        return err;
                }
@@ -1349,7 +1341,7 @@ static int atc_get_resources(struct ct_atc *atc)
        err = daio_mgr->get_daio(daio_mgr, &da_desc,
                                (struct daio **)&atc->daios[i]);
        if (err) {
-               printk(KERN_ERR "Failed to get S/PDIF-in resource!!!\n");
+               printk(KERN_ERR "ctxfi: Failed to get S/PDIF-in resource!!!\n");
                return err;
        }
        atc->n_daio++;
@@ -1400,7 +1392,7 @@ static int atc_get_resources(struct ct_atc *atc)
 
        err = ct_mixer_create(atc, (struct ct_mixer **)&atc->mixer);
        if (err) {
-               printk(KERN_ERR "Failed to create mixer obj!!!\n");
+               printk(KERN_ERR "ctxfi: Failed to create mixer obj!!!\n");
                return err;
        }
 
@@ -1560,7 +1552,6 @@ int ct_atc_create(struct snd_card *card, struct pci_dev *pci,
        atc_set_ops(atc);
 
        spin_lock_init(&atc->atc_lock);
-       spin_lock_init(&atc->vm_lock);
 
        /* Find card model */
        err = atc_identify_card(atc);
@@ -1600,7 +1591,7 @@ int ct_atc_create(struct snd_card *card, struct pci_dev *pci,
 
 error1:
        ct_atc_destroy(atc);
-       printk(KERN_ERR "Something wrong!!!\n");
+       printk(KERN_ERR "ctxfi: Something wrong!!!\n");
        return err;
 }