diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmalloc.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index d3a9c5368257..ddf87145cc49 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -68,12 +68,12 @@ static inline void vunmap_pud_range(pgd_t *pgd, unsigned long addr, | |||
68 | } while (pud++, addr = next, addr != end); | 68 | } while (pud++, addr = next, addr != end); |
69 | } | 69 | } |
70 | 70 | ||
71 | void unmap_vm_area(struct vm_struct *area) | 71 | void unmap_kernel_range(unsigned long addr, unsigned long size) |
72 | { | 72 | { |
73 | pgd_t *pgd; | 73 | pgd_t *pgd; |
74 | unsigned long next; | 74 | unsigned long next; |
75 | unsigned long addr = (unsigned long) area->addr; | 75 | unsigned long start = addr; |
76 | unsigned long end = addr + area->size; | 76 | unsigned long end = addr + size; |
77 | 77 | ||
78 | BUG_ON(addr >= end); | 78 | BUG_ON(addr >= end); |
79 | pgd = pgd_offset_k(addr); | 79 | pgd = pgd_offset_k(addr); |
@@ -84,7 +84,12 @@ void unmap_vm_area(struct vm_struct *area) | |||
84 | continue; | 84 | continue; |
85 | vunmap_pud_range(pgd, addr, next); | 85 | vunmap_pud_range(pgd, addr, next); |
86 | } while (pgd++, addr = next, addr != end); | 86 | } while (pgd++, addr = next, addr != end); |
87 | flush_tlb_kernel_range((unsigned long) area->addr, end); | 87 | flush_tlb_kernel_range(start, end); |
88 | } | ||
89 | |||
90 | static void unmap_vm_area(struct vm_struct *area) | ||
91 | { | ||
92 | unmap_kernel_range((unsigned long)area->addr, area->size); | ||
88 | } | 93 | } |
89 | 94 | ||
90 | static int vmap_pte_range(pmd_t *pmd, unsigned long addr, | 95 | static int vmap_pte_range(pmd_t *pmd, unsigned long addr, |