[KJ] [PATCH] oss/btaudio.c: Check ioremap return value and free with iounmap

Domen Puncer domen at coderock.org
Mon Sep 4 15:04:53 PDT 2006


On 03/09/06 19:26 +0300, ville palo wrote:
> 
> Check return value of the ioremap() and balance ioremap()
> with iounmap().
> 
> Signed-off-by: Ville Palo <ville.palo at vi64pa.net>
> 
> diff --git a/sound/oss/btaudio.c b/sound/oss/btaudio.c
> index 324a81f..9b1837f 100644
> --- a/sound/oss/btaudio.c
> +++ b/sound/oss/btaudio.c
> @@ -927,6 +927,10 @@ static int __devinit btaudio_probe(struc
>  	bta->mem  = pci_resource_start(pci_dev,0);
>  	bta->mmio = ioremap(pci_resource_start(pci_dev,0),
>  			    pci_resource_len(pci_dev,0));
> +	if (!bta->mmio) {
> +		rc = -EIO;
> +		goto fail1;
> +	}
>  
>  	bta->source     = 1;
>  	bta->bits       = 8;
> @@ -1019,6 +1023,7 @@ static int __devinit btaudio_probe(struc
>  		unregister_sound_dsp(bta->dsp_digital);
>   fail2:
>          free_irq(bta->irq,bta);	
> +	iounmap(bta->mmio);

Why here?
This won't work if ie. request_irq fails.


	Domen

>   fail1:
>  	kfree(bta);
>   fail0:
> @@ -1047,6 +1052,8 @@ static void __devexit btaudio_remove(str
>  	}
>  
>  	/* free resources */
> +	if (bta->mmio)
> +		iounmap(bta->mmio);
>  	free_buffer(bta);
>          free_irq(bta->irq,bta);
>  	release_mem_region(pci_resource_start(pci_dev,0),
> 
> 
> _______________________________________________
> Kernel-janitors mailing list
> Kernel-janitors at lists.osdl.org
> https://lists.osdl.org/mailman/listinfo/kernel-janitors



More information about the Kernel-janitors mailing list