All of lore.kernel.org
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] kmemleak: When the early log buffer is exceeded, report the actual number
Date: Thu, 29 Sep 2011 12:02:34 +0100	[thread overview]
Message-ID: <20110929110234.10660.59748.stgit@e102109-lin.cambridge.arm.com> (raw)
In-Reply-To: <20110929105940.10660.76130.stgit@e102109-lin.cambridge.arm.com>

Just telling that the early log buffer has been exceeded doesn't mean
much. This patch moves the error printing to the kmemleak_init()
function and displays the actual calls to the kmemleak API during early
logging.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
---
 mm/kmemleak.c |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 573152e..e6dd17b 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -797,9 +797,13 @@ static void __init log_early(int op_type, const void *ptr, size_t size,
 	unsigned long flags;
 	struct early_log *log;
 
+	if (atomic_read(&kmemleak_error)) {
+		/* kmemleak stopped recording, just count the requests */
+		crt_early_log++;
+		return;
+	}
+
 	if (crt_early_log >= ARRAY_SIZE(early_log)) {
-		pr_warning("Early log buffer exceeded, "
-			   "please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE\n");
 		kmemleak_disable();
 		return;
 	}
@@ -1634,7 +1638,6 @@ static void kmemleak_disable(void)
 		return;
 
 	/* stop any memory operation tracing */
-	atomic_set(&kmemleak_early_log, 0);
 	atomic_set(&kmemleak_enabled, 0);
 
 	/* check whether it is too early for a kernel thread */
@@ -1694,12 +1697,18 @@ void __init kmemleak_init(void)
 	scan_area_cache = KMEM_CACHE(kmemleak_scan_area, SLAB_NOLEAKTRACE);
 	INIT_PRIO_TREE_ROOT(&object_tree_root);
 
+	if (crt_early_log >= ARRAY_SIZE(early_log))
+		pr_warning("Early log buffer exceeded (%d), please increase "
+			   "DEBUG_KMEMLEAK_EARLY_LOG_SIZE\n", crt_early_log);
+
 	/* the kernel is still in UP mode, so disabling the IRQs is enough */
 	local_irq_save(flags);
-	if (!atomic_read(&kmemleak_error)) {
+	atomic_set(&kmemleak_early_log, 0);
+	if (atomic_read(&kmemleak_error)) {
+		local_irq_restore(flags);
+		return;
+	} else
 		atomic_set(&kmemleak_enabled, 1);
-		atomic_set(&kmemleak_early_log, 0);
-	}
 	local_irq_restore(flags);
 
 	/*



  parent reply	other threads:[~2011-09-29 11:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-29 11:02 [PATCH 0/4] Kmemleak patches for -next Catalin Marinas
2011-09-29 11:02 ` [PATCH 1/4] kmemleak: Show where early_log issues come from Catalin Marinas
2011-09-29 11:02 ` [PATCH 2/4] kmemleak: Handle percpu memory allocation Catalin Marinas
2011-09-29 11:56   ` Eric Dumazet
2011-09-29 17:17     ` Catalin Marinas
2011-09-29 17:57       ` Christoph Lameter
2011-09-29 19:28   ` Tejun Heo
2011-09-30  8:37     ` Catalin Marinas
2011-10-03 15:21     ` Catalin Marinas
2011-10-03 16:14       ` Christoph Lameter
2011-10-04  7:59       ` Tejun Heo
2011-10-04  9:04         ` Catalin Marinas
2011-10-04  9:13           ` Tejun Heo
2011-10-04  9:26             ` Catalin Marinas
2011-10-04 16:59               ` Tejun Heo
2011-10-04 17:06                 ` Catalin Marinas
2011-09-29 11:02 ` Catalin Marinas [this message]
2011-09-29 11:02 ` [PATCH 4/4] kmemleak: Report previously found leaks even after an error Catalin Marinas
2011-10-04 17:45   ` Nick Bowler
2011-10-04 20:50     ` Catalin Marinas
2011-10-04 21:14       ` Nick Bowler
2011-10-24 18:57         ` Nick Bowler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110929110234.10660.59748.stgit@e102109-lin.cambridge.arm.com \
    --to=catalin.marinas@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.