diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-30 20:37:44 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-30 20:37:44 -0500 |
| commit | 9e0cb06b17be7e562cbdaba2768649f025826dc6 (patch) | |
| tree | aaf5ef8c6cd11764d222df9c446ad9af17e0020e /arch/ia64/mm/init.c | |
| parent | 23da0c20ef1c1f0432f373e0e2233a6b6ab2678f (diff) | |
| parent | 6e9d6b8ee4e0c37d3952256e6472c57490d6780d (diff) | |
Merge branch 'master'
Diffstat (limited to 'arch/ia64/mm/init.c')
| -rw-r--r-- | arch/ia64/mm/init.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 98246acd4991..e3215ba64ffd 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
| @@ -158,7 +158,7 @@ ia64_init_addr_space (void) | |||
| 158 | vma->vm_start = current->thread.rbs_bot & PAGE_MASK; | 158 | vma->vm_start = current->thread.rbs_bot & PAGE_MASK; |
| 159 | vma->vm_end = vma->vm_start + PAGE_SIZE; | 159 | vma->vm_end = vma->vm_start + PAGE_SIZE; |
| 160 | vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7]; | 160 | vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7]; |
| 161 | vma->vm_flags = VM_DATA_DEFAULT_FLAGS | VM_GROWSUP; | 161 | vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT; |
| 162 | down_write(¤t->mm->mmap_sem); | 162 | down_write(¤t->mm->mmap_sem); |
| 163 | if (insert_vm_struct(current->mm, vma)) { | 163 | if (insert_vm_struct(current->mm, vma)) { |
| 164 | up_write(¤t->mm->mmap_sem); | 164 | up_write(¤t->mm->mmap_sem); |
| @@ -275,26 +275,21 @@ put_kernel_page (struct page *page, unsigned long address, pgprot_t pgprot) | |||
| 275 | 275 | ||
| 276 | pgd = pgd_offset_k(address); /* note: this is NOT pgd_offset()! */ | 276 | pgd = pgd_offset_k(address); /* note: this is NOT pgd_offset()! */ |
| 277 | 277 | ||
| 278 | spin_lock(&init_mm.page_table_lock); | ||
| 279 | { | 278 | { |
| 280 | pud = pud_alloc(&init_mm, pgd, address); | 279 | pud = pud_alloc(&init_mm, pgd, address); |
| 281 | if (!pud) | 280 | if (!pud) |
| 282 | goto out; | 281 | goto out; |
| 283 | |||
| 284 | pmd = pmd_alloc(&init_mm, pud, address); | 282 | pmd = pmd_alloc(&init_mm, pud, address); |
| 285 | if (!pmd) | 283 | if (!pmd) |
| 286 | goto out; | 284 | goto out; |
| 287 | pte = pte_alloc_map(&init_mm, pmd, address); | 285 | pte = pte_alloc_kernel(pmd, address); |
| 288 | if (!pte) | 286 | if (!pte) |
| 289 | goto out; | 287 | goto out; |
| 290 | if (!pte_none(*pte)) { | 288 | if (!pte_none(*pte)) |
| 291 | pte_unmap(pte); | ||
| 292 | goto out; | 289 | goto out; |
| 293 | } | ||
| 294 | set_pte(pte, mk_pte(page, pgprot)); | 290 | set_pte(pte, mk_pte(page, pgprot)); |
| 295 | pte_unmap(pte); | ||
| 296 | } | 291 | } |
| 297 | out: spin_unlock(&init_mm.page_table_lock); | 292 | out: |
| 298 | /* no need for flush_tlb */ | 293 | /* no need for flush_tlb */ |
| 299 | return page; | 294 | return page; |
| 300 | } | 295 | } |
