diff options
Diffstat (limited to 'mm/vmalloc.c')
-rw-r--r-- | mm/vmalloc.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 5e9120598799..54a90e83cb31 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -89,7 +89,7 @@ static int vmap_pte_range(pmd_t *pmd, unsigned long addr, | |||
89 | { | 89 | { |
90 | pte_t *pte; | 90 | pte_t *pte; |
91 | 91 | ||
92 | pte = pte_alloc_kernel(&init_mm, pmd, addr); | 92 | pte = pte_alloc_kernel(pmd, addr); |
93 | if (!pte) | 93 | if (!pte) |
94 | return -ENOMEM; | 94 | return -ENOMEM; |
95 | do { | 95 | do { |
@@ -147,14 +147,12 @@ int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) | |||
147 | 147 | ||
148 | BUG_ON(addr >= end); | 148 | BUG_ON(addr >= end); |
149 | pgd = pgd_offset_k(addr); | 149 | pgd = pgd_offset_k(addr); |
150 | spin_lock(&init_mm.page_table_lock); | ||
151 | do { | 150 | do { |
152 | next = pgd_addr_end(addr, end); | 151 | next = pgd_addr_end(addr, end); |
153 | err = vmap_pud_range(pgd, addr, next, prot, pages); | 152 | err = vmap_pud_range(pgd, addr, next, prot, pages); |
154 | if (err) | 153 | if (err) |
155 | break; | 154 | break; |
156 | } while (pgd++, addr = next, addr != end); | 155 | } while (pgd++, addr = next, addr != end); |
157 | spin_unlock(&init_mm.page_table_lock); | ||
158 | flush_cache_vmap((unsigned long) area->addr, end); | 156 | flush_cache_vmap((unsigned long) area->addr, end); |
159 | return err; | 157 | return err; |
160 | } | 158 | } |