git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
arch
/
arm26
/
mm
/
memc.c
diff --git
a/arch/arm26/mm/memc.c
b/arch/arm26/mm/memc.c
index
8e8a2bb
..
34def63
100644
(file)
--- a/
arch/arm26/mm/memc.c
+++ b/
arch/arm26/mm/memc.c
@@
-78,12
+78,6
@@
pgd_t *get_pgd_slow(struct mm_struct *mm)
if (!new_pgd)
goto no_pgd;
if (!new_pgd)
goto no_pgd;
- /*
- * This lock is here just to satisfy pmd_alloc and pte_lock
- * FIXME: I bet we could avoid taking it pretty much altogether
- */
- spin_lock(&mm->page_table_lock);
-
/*
* On ARM, first page must always be allocated since it contains
* the machine vectors.
/*
* On ARM, first page must always be allocated since it contains
* the machine vectors.
@@
-92,7
+86,7
@@
pgd_t *get_pgd_slow(struct mm_struct *mm)
if (!new_pmd)
goto no_pmd;
if (!new_pmd)
goto no_pmd;
- new_pte = pte_alloc_
kernel
(mm, new_pmd, 0);
+ new_pte = pte_alloc_
map
(mm, new_pmd, 0);
if (!new_pte)
goto no_pte;
if (!new_pte)
goto no_pte;
@@
-101,6
+95,7
@@
pgd_t *get_pgd_slow(struct mm_struct *mm)
init_pte = pte_offset(init_pmd, 0);
set_pte(new_pte, *init_pte);
init_pte = pte_offset(init_pmd, 0);
set_pte(new_pte, *init_pte);
+ pte_unmap(new_pte);
/*
* the page table entries are zeroed
/*
* the page table entries are zeroed
@@
-112,23
+107,14
@@
pgd_t *get_pgd_slow(struct mm_struct *mm)
memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,
(PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));
memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,
(PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));
- spin_unlock(&mm->page_table_lock);
-
/* update MEMC tables */
cpu_memc_update_all(new_pgd);
return new_pgd;
no_pte:
/* update MEMC tables */
cpu_memc_update_all(new_pgd);
return new_pgd;
no_pte:
- spin_unlock(&mm->page_table_lock);
pmd_free(new_pmd);
pmd_free(new_pmd);
- free_pgd_slow(new_pgd);
- return NULL;
-
no_pmd:
no_pmd:
- spin_unlock(&mm->page_table_lock);
free_pgd_slow(new_pgd);
free_pgd_slow(new_pgd);
- return NULL;
-
no_pgd:
return NULL;
}
no_pgd:
return NULL;
}