diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2013-08-07 15:42:34 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2013-08-13 16:26:25 -0400 |
commit | fad052dc4be7b1d9e7ff40ccd8ba2b8216823b51 (patch) | |
tree | 8c797b21480c322dab8542e8a5d851b014496c70 /arch/tile | |
parent | 4a556f4f56da3110b27e265b79f0e7582115445c (diff) | |
download | op-kernel-dev-fad052dc4be7b1d9e7ff40ccd8ba2b8216823b51.zip op-kernel-dev-fad052dc4be7b1d9e7ff40ccd8ba2b8216823b51.tar.gz |
tile: avoid struct vm_struct leak
If ioreamp_prot() fails in ioremap_page_range() due to kernel memory
exhaustion, we previously would leak a struct vm_struct.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/mm/pgtable.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c index dfd63ce..2bd572b 100644 --- a/arch/tile/mm/pgtable.c +++ b/arch/tile/mm/pgtable.c @@ -568,7 +568,7 @@ void __iomem *ioremap_prot(resource_size_t phys_addr, unsigned long size, addr = area->addr; if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, phys_addr, pgprot)) { - remove_vm_area((void *)(PAGE_MASK & (unsigned long) addr)); + free_vm_area(area); return NULL; } return (__force void __iomem *) (offset + (char *)addr); |