From 84b35642a64ce3c7ca1d64c6e618d551f1fb32bc Mon Sep 17 00:00:00 2001 From: Konstantin Khlebnikov Date: Wed, 21 Mar 2012 16:33:48 -0700 Subject: [PATCH] --- yaml --- r: 292618 b: refs/heads/master c: c3f0327f8e9d7a503f0d64573c311eddd61f197d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/fork.c | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 3984f82d7d87..d441084d7dff 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dc3f21eadeea6d9898271ff32d35d5e00c6872ea +refs/heads/master: c3f0327f8e9d7a503f0d64573c311eddd61f197d diff --git a/trunk/kernel/fork.c b/trunk/kernel/fork.c index c4f38a849436..a9e99f3c18e0 100644 --- a/trunk/kernel/fork.c +++ b/trunk/kernel/fork.c @@ -511,6 +511,23 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) return NULL; } +static void check_mm(struct mm_struct *mm) +{ + int i; + + for (i = 0; i < NR_MM_COUNTERS; i++) { + long x = atomic_long_read(&mm->rss_stat.count[i]); + + if (unlikely(x)) + printk(KERN_ALERT "BUG: Bad rss-counter state " + "mm:%p idx:%d val:%ld\n", mm, i, x); + } + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + VM_BUG_ON(mm->pmd_huge_pte); +#endif +} + /* * Allocate and initialize an mm_struct. */ @@ -538,9 +555,7 @@ void __mmdrop(struct mm_struct *mm) mm_free_pgd(mm); destroy_context(mm); mmu_notifier_mm_destroy(mm); -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - VM_BUG_ON(mm->pmd_huge_pte); -#endif + check_mm(mm); free_mm(mm); } EXPORT_SYMBOL_GPL(__mmdrop);