linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] [POWERPC] pasemi: ioremap/iounmap balance and failure handling
@ 2008-12-13 16:45 Roel Kluin
  2008-12-13 19:15 ` Roel Kluin
  2008-12-13 21:13 ` Olof Johansson
  0 siblings, 2 replies; 5+ messages in thread
From: Roel Kluin @ 2008-12-13 16:45 UTC (permalink / raw)
  To: Olof Johansson; +Cc: linuxppc-dev

map_onedev can return NULL, so catch that. Also iounmap if DMA controller can't be
found.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
UNTESTED! I am a bit new, so please confirm whether this is correct. especially: 

* can we iounmap while init_lock is held?
* is it ok to add another BUG() here?

diff --git a/arch/powerpc/platforms/pasemi/dma_lib.c b/arch/powerpc/platforms/pasemi/dma_lib.c
index 217af32..bdf5440 100644
--- a/arch/powerpc/platforms/pasemi/dma_lib.c
+++ b/arch/powerpc/platforms/pasemi/dma_lib.c
@@ -534,14 +534,21 @@ int pasemi_dma_init(void)
 		err = -ENODEV;
 		goto out;
 	}
+
 	iob_regs = map_onedev(iob_pdev, 0);
+	if (iob_regs == NULL) {
+		BUG();
+		printk(KERN_WARNING "Can't ioremap I/O Bridge registers\n");
+		err = -ENODEV;
+		goto out;
+	}
 
 	dma_pdev = pci_get_device(PCI_VENDOR_ID_PASEMI, 0xa007, NULL);
 	if (!dma_pdev) {
 		BUG();
 		printk(KERN_WARNING "Can't find DMA controller\n");
 		err = -ENODEV;
-		goto out;
+		goto out_unmap;
 	}
 	dma_regs = map_onedev(dma_pdev, 0);
 	base_hw_irq = virq_to_hw(dma_pdev->irq);
@@ -624,6 +631,10 @@ int pasemi_dma_init(void)
 
 	printk(KERN_INFO "PA Semi PWRficient DMA library initialized "
 		"(%d tx, %d rx channels)\n", num_txch, num_rxch);
+	goto out;
+
+out_unmap:
+	iounmap(iob_regs);
 
 out:
 	spin_unlock(&init_lock);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-01-07  0:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-13 16:45 [PATCH] [POWERPC] pasemi: ioremap/iounmap balance and failure handling Roel Kluin
2008-12-13 19:15 ` Roel Kluin
2008-12-13 21:13 ` Olof Johansson
2008-12-16 10:52   ` Roel Kluin
2009-01-07  0:50     ` Benjamin Herrenschmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).