Re: 2.6.24-mm1 Build Faliure on pgtable_32.c

Kamalesh Babulal
2008-02-04T03:55:57Z

Hi Andrew,

The 2.6.24-mm1 kernel build fails with

arch/x86/mm/pgtable_32.c: In function `pgd_mop_up_pmds':
arch/x86/mm/pgtable_32.c:302: warning: passing arg 1 of `pmd_free' from incompatible pointer type
arch/x86/mm/pgtable_32.c:302: error: too few arguments to function `pmd_free'

I have tested the patch for the build failure only.

Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
--
--- linux-2.6.24/arch/x86/mm/pgtable_32.c 2008-02-04 07:36:36.000000000 +0000
+++ linux-2.6.24/arch/x86/mm/~pgtable_32.c 2008-02-04 07:38:02.000000000 +0000
@@ -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 *pgdp)
{
}
#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);
}

--
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.