diff options
Diffstat (limited to 'arch/arm/mm/mm-armv.c')
| -rw-r--r-- | arch/arm/mm/mm-armv.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 61bc2fa0511e..1221fdde1769 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
| @@ -180,11 +180,6 @@ pgd_t *get_pgd_slow(struct mm_struct *mm) | |||
| 180 | 180 | ||
| 181 | if (!vectors_high()) { | 181 | if (!vectors_high()) { |
| 182 | /* | 182 | /* |
| 183 | * This lock is here just to satisfy pmd_alloc and pte_lock | ||
| 184 | */ | ||
| 185 | spin_lock(&mm->page_table_lock); | ||
| 186 | |||
| 187 | /* | ||
| 188 | * On ARM, first page must always be allocated since it | 183 | * On ARM, first page must always be allocated since it |
| 189 | * contains the machine vectors. | 184 | * contains the machine vectors. |
| 190 | */ | 185 | */ |
| @@ -201,23 +196,14 @@ pgd_t *get_pgd_slow(struct mm_struct *mm) | |||
| 201 | set_pte(new_pte, *init_pte); | 196 | set_pte(new_pte, *init_pte); |
| 202 | pte_unmap_nested(init_pte); | 197 | pte_unmap_nested(init_pte); |
| 203 | pte_unmap(new_pte); | 198 | pte_unmap(new_pte); |
| 204 | |||
| 205 | spin_unlock(&mm->page_table_lock); | ||
| 206 | } | 199 | } |
| 207 | 200 | ||
| 208 | return new_pgd; | 201 | return new_pgd; |
| 209 | 202 | ||
| 210 | no_pte: | 203 | no_pte: |
| 211 | spin_unlock(&mm->page_table_lock); | ||
| 212 | pmd_free(new_pmd); | 204 | pmd_free(new_pmd); |
| 213 | free_pages((unsigned long)new_pgd, 2); | ||
| 214 | return NULL; | ||
| 215 | |||
| 216 | no_pmd: | 205 | no_pmd: |
| 217 | spin_unlock(&mm->page_table_lock); | ||
| 218 | free_pages((unsigned long)new_pgd, 2); | 206 | free_pages((unsigned long)new_pgd, 2); |
| 219 | return NULL; | ||
| 220 | |||
| 221 | no_pgd: | 207 | no_pgd: |
| 222 | return NULL; | 208 | return NULL; |
| 223 | } | 209 | } |
| @@ -243,6 +229,7 @@ void free_pgd_slow(pgd_t *pgd) | |||
| 243 | pte = pmd_page(*pmd); | 229 | pte = pmd_page(*pmd); |
| 244 | pmd_clear(pmd); | 230 | pmd_clear(pmd); |
| 245 | dec_page_state(nr_page_table_pages); | 231 | dec_page_state(nr_page_table_pages); |
| 232 | pte_lock_deinit(pte); | ||
| 246 | pte_free(pte); | 233 | pte_free(pte); |
| 247 | pmd_free(pmd); | 234 | pmd_free(pmd); |
| 248 | free: | 235 | free: |
