Messages in this thread Patch in this message | | | From | Jeremy Fitzhardinge <> | Subject | [PATCH 4/9] vmalloc: use plain pte_clear() for unmaps | Date | Wed, 15 Dec 2010 14:19:50 -0800 |
| |
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
ptep_get_and_clear() is potentially moderately expensive (at least an atomic operation, or potentially a trap-and-fault when virtualized) so use a plain pte_clear().
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> --- mm/vmalloc.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e95980a..67ce748 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -39,8 +39,9 @@ static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) pte = pte_offset_kernel(pmd, addr); do { - pte_t ptent = ptep_get_and_clear(&init_mm, addr, pte); + pte_t ptent = *pte; WARN_ON(!pte_none(ptent) && !pte_present(ptent)); + pte_clear(&init_mm, addr, pte); } while (pte++, addr += PAGE_SIZE, addr != end); } -- 1.7.3.3
| |