summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-01-18 21:33:08 +0900
committerPaul Mundt <lethal@linux-sh.org>2010-01-18 21:33:08 +0900
commit12b6b01cb47dc3eefbef866592193661dad7afb9 (patch)
tree47d23fb1b9657ea6107bc64d91e85de56717bedc
parent4f744affc345f8b158615e0cdd01d1f4985837c3 (diff)
downloadop-kernel-dev-12b6b01cb47dc3eefbef866592193661dad7afb9.zip
op-kernel-dev-12b6b01cb47dc3eefbef866592193661dad7afb9.tar.gz
sh: Handle unmapping of fixed slots transparently in iounmap().
iounmap() should balance whatever is done by ioremap(). Presently ioremap() can do any of fixed mappings, PMB mappings, or page table mappings. Presently only the latter two are handled through the standard unmap path, so tie in the fixed unmapping, too. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--arch/sh/mm/ioremap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/sh/mm/ioremap.c b/arch/sh/mm/ioremap.c
index 24f6ba6..e8b65f6 100644
--- a/arch/sh/mm/ioremap.c
+++ b/arch/sh/mm/ioremap.c
@@ -142,6 +142,12 @@ void __iounmap(void __iomem *addr)
if (iomapping_nontranslatable(vaddr))
return;
+ /*
+ * There's no VMA if it's from an early fixed mapping.
+ */
+ if (iounmap_fixed(addr) == 0)
+ return;
+
#ifdef CONFIG_PMB
/*
* Purge any PMB entries that may have been established for this
OpenPOWER on IntegriCloud