diff options
Diffstat (limited to 'mm/vmalloc.c')
| -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 d3a9c536825..ddf87145cc4 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,  	} while (pud++, addr = next, addr != end);  } -void unmap_vm_area(struct vm_struct *area) +void unmap_kernel_range(unsigned long addr, unsigned long size)  {  	pgd_t *pgd;  	unsigned long next; -	unsigned long addr = (unsigned long) area->addr; -	unsigned long end = addr + area->size; +	unsigned long start = addr; +	unsigned long end = addr + size;  	BUG_ON(addr >= end);  	pgd = pgd_offset_k(addr); @@ -84,7 +84,12 @@ void unmap_vm_area(struct vm_struct *area)  			continue;  		vunmap_pud_range(pgd, addr, next);  	} while (pgd++, addr = next, addr != end); -	flush_tlb_kernel_range((unsigned long) area->addr, end); +	flush_tlb_kernel_range(start, end); +} + +static void unmap_vm_area(struct vm_struct *area) +{ +	unmap_kernel_range((unsigned long)area->addr, area->size);  }  static int vmap_pte_range(pmd_t *pmd, unsigned long addr,  |