From: Julia Lawall Julia.Lawall@lip6.fr
There seems to be no interaction between *port and the requested region, so the clearing of *vport should take place if the request_region fails.
Signed-off-by: Julia Lawall Julia.Lawall@lip6.fr
--- Not tested. sc6000_setup_board seems rather complicated, so my reasoning could be completely wrong.
sound/isa/sc6000.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c index d97d0f3..57679cb 100644 --- a/sound/isa/sc6000.c +++ b/sound/isa/sc6000.c @@ -594,7 +594,7 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) snd_printk(KERN_ERR PFX "I/O port cannot be iomaped.\n"); err = -EBUSY; - goto err_unmap1; + goto err_unmap0; }
/* to make it marked as used */ @@ -678,9 +678,10 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) return 0;
err_unmap2: - sc6000_setup_board(*vport, 0); release_region(mss_port[dev], 4); err_unmap1: + sc6000_setup_board(*vport, 0); +err_unmap0: release_region(port[dev], 0x10); err_exit: snd_card_free(card);