Messages in this thread Patch in this message |  | | | From | Yuanhan Liu <> | | Subject | [PATCH] x86/mm: stop allocating pmd page if failed | | Date | Tue, 24 Jul 2012 21:15:51 +0800 |
| |
The old code would call __get_free_page() even though previous allocation fail met. This is not needed.
Signed-off-by: Yuanhan Liu <yliu.null@gmail.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: "H. Peter Anvin" <hpa@zytor.com> --- arch/x86/mm/pgtable.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 8573b83..6760348 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -181,24 +181,24 @@ static void free_pmds(pmd_t *pmds[]) { int i; - for(i = 0; i < PREALLOCATED_PMDS; i++) - if (pmds[i]) - free_page((unsigned long)pmds[i]); + for(i = 0; i < PREALLOCATED_PMDS; i++) { + if (pmds[i] == NULL) + break; + free_page((unsigned long)pmds[i]); + } } static int preallocate_pmds(pmd_t *pmds[]) { int i; - bool failed = false; for(i = 0; i < PREALLOCATED_PMDS; i++) { - pmd_t *pmd = (pmd_t *)__get_free_page(PGALLOC_GFP); - if (pmd == NULL) - failed = true; - pmds[i] = pmd; + pmds[i] = (pmd_t *)__get_free_page(PGALLOC_GFP); + if (pmds[i] == NULL) + break; } - if (failed) { + if (i < PREALLOCATED_PMDS) { free_pmds(pmds); return -ENOMEM; } -- 1.7.4.4
|  |