[PATCH 2.6.24-mm1] fix build error in arch/x86/mm/pgtable_32.c

From: Nadia Derbey
Date: Fri Feb 08 2008 - 05:08:12 EST


Hi,

2.6.24-mm1 won't build if CONFIG_X86_PAE is defined:


/home/lkernel/src/linux-2.6.24-mm1/arch/x86/mm/pgtable_32.c: In function ‘pgd_mop_up_pmds’:
/home/lkernel/src/linux-2.6.24-mm1/arch/x86/mm/pgtable_32.c:302: warning: passing argument 1 of ‘pmd_free’ from incompatible pointer type
/home/lkernel/src/linux-2.6.24-mm1/arch/x86/mm/pgtable_32.c:302: error: too few arguments to function ‘pmd_free’
make[2]: *** [arch/x86/mm/pgtable_32.o] Error 1
make[1]: *** [arch/x86/mm] Error 2
make: *** [sub-make] Error 2


You'll find the proposed patch in attachment.

Regards,
Nadia
Add the mm missing argument to pmd_free() calls.

Signed-off-by: Nadia Derbey <Nadia.Derbey@xxxxxxxx>

---
arch/x86/mm/pgtable_32.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

Index: linux-2.6.24-mm1/arch/x86/mm/pgtable_32.c
===================================================================
--- linux-2.6.24-mm1.orig/arch/x86/mm/pgtable_32.c 2008-02-07 13:40:42.000000000 +0100
+++ linux-2.6.24-mm1/arch/x86/mm/pgtable_32.c 2008-02-08 11:40:00.000000000 +0100
@@ -286,7 +286,7 @@ static void pgd_dtor(void *pgd)
* preallocate which never got a corresponding vma will need to be
* freed manually.
*/
-static void pgd_mop_up_pmds(pgd_t *pgdp)
+static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp)
{
int i;

@@ -299,7 +299,7 @@ static void pgd_mop_up_pmds(pgd_t *pgdp)
pgdp[i] = native_make_pgd(0);

paravirt_release_pd(pgd_val(pgd) >> PAGE_SHIFT);
- pmd_free(pmd);
+ pmd_free(mm, pmd);
}
}
}
@@ -327,7 +327,7 @@ static int pgd_prepopulate_pmd(struct mm
pmd_t *pmd = pmd_alloc_one(mm, addr);

if (!pmd) {
- pgd_mop_up_pmds(pgd);
+ pgd_mop_up_pmds(mm, pgd);
return 0;
}

@@ -347,7 +347,7 @@ static int pgd_prepopulate_pmd(struct mm
return 1;
}

-static void pgd_mop_up_pmds(pgd_t *pgd)
+static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgd)
{
}
#endif /* CONFIG_X86_PAE */
@@ -368,7 +368,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm)

void pgd_free(struct mm_struct *mm, pgd_t *pgd)
{
- pgd_mop_up_pmds(pgd);
+ pgd_mop_up_pmds(mm, pgd);
quicklist_free(0, pgd_dtor, pgd);
}