The old code would call __get_free_page() even though previous allocation fail met. This is not needed.
Signed-off-by: Yuanhan Liu <yliu.n...@gmail.com> Cc: Jeremy Fitzhardinge <jer...@goop.org> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Ingo Molnar <mi...@elte.hu> Cc: "H. Peter Anvin" <h...@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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/