diff options
Diffstat (limited to 'arch/parisc/mm/ioremap.c')
-rw-r--r-- | arch/parisc/mm/ioremap.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c index f2df502cdae3..5c7a1b3b9326 100644 --- a/arch/parisc/mm/ioremap.c +++ b/arch/parisc/mm/ioremap.c | |||
@@ -52,7 +52,7 @@ static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned lo | |||
52 | if (address >= end) | 52 | if (address >= end) |
53 | BUG(); | 53 | BUG(); |
54 | do { | 54 | do { |
55 | pte_t * pte = pte_alloc_kernel(NULL, pmd, address); | 55 | pte_t * pte = pte_alloc_kernel(pmd, address); |
56 | if (!pte) | 56 | if (!pte) |
57 | return -ENOMEM; | 57 | return -ENOMEM; |
58 | remap_area_pte(pte, address, end - address, address + phys_addr, flags); | 58 | remap_area_pte(pte, address, end - address, address + phys_addr, flags); |
@@ -75,10 +75,9 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr, | |||
75 | flush_cache_all(); | 75 | flush_cache_all(); |
76 | if (address >= end) | 76 | if (address >= end) |
77 | BUG(); | 77 | BUG(); |
78 | spin_lock(&init_mm.page_table_lock); | ||
79 | do { | 78 | do { |
80 | pmd_t *pmd; | 79 | pmd_t *pmd; |
81 | pmd = pmd_alloc(dir, address); | 80 | pmd = pmd_alloc(&init_mm, dir, address); |
82 | error = -ENOMEM; | 81 | error = -ENOMEM; |
83 | if (!pmd) | 82 | if (!pmd) |
84 | break; | 83 | break; |
@@ -89,7 +88,6 @@ static int remap_area_pages(unsigned long address, unsigned long phys_addr, | |||
89 | address = (address + PGDIR_SIZE) & PGDIR_MASK; | 88 | address = (address + PGDIR_SIZE) & PGDIR_MASK; |
90 | dir++; | 89 | dir++; |
91 | } while (address && (address < end)); | 90 | } while (address && (address < end)); |
92 | spin_unlock(&init_mm.page_table_lock); | ||
93 | flush_tlb_all(); | 91 | flush_tlb_all(); |
94 | return error; | 92 | return error; |
95 | } | 93 | } |