X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=kernel%2Ffork.c;h=cf65139615a0d38e3fef37ee3a6e2e270c01ccaf;hb=2d2f5119b8bb057595e18f5b2f07aa097ea1b233;hp=b379d9abddc74c866f78eeca130f21239f5bea1e;hpb=27ba0644ea9dfe6e7693abc85837b60e40583b96;p=deliverable%2Flinux.git diff --git a/kernel/fork.c b/kernel/fork.c index b379d9abddc7..cf65139615a0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -555,6 +555,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) INIT_LIST_HEAD(&mm->mmlist); mm->core_state = NULL; atomic_long_set(&mm->nr_ptes, 0); + mm_nr_pmds_init(mm); mm->map_count = 0; mm->locked_vm = 0; mm->pinned_vm = 0; @@ -603,6 +604,14 @@ static void check_mm(struct mm_struct *mm) printk(KERN_ALERT "BUG: Bad rss-counter state " "mm:%p idx:%d val:%ld\n", mm, i, x); } + + if (atomic_long_read(&mm->nr_ptes)) + pr_alert("BUG: non-zero nr_ptes on freeing mm: %ld\n", + atomic_long_read(&mm->nr_ptes)); + if (mm_nr_pmds(mm)) + pr_alert("BUG: non-zero nr_pmds on freeing mm: %ld\n", + mm_nr_pmds(mm)); + #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && !USE_SPLIT_PMD_PTLOCKS VM_BUG_ON_MM(mm->pmd_huge_pte, mm); #endif