From: Ingo Molnar <mingo@elte.hu>
To: Pekka J Enberg <penberg@cs.Helsinki.FI>
Cc: Catalin Marinas <catalin.marinas@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2.6.17-rc6 7/9] Remove some of the kmemleak false positives
Date: Mon, 12 Jun 2006 13:36:37 +0200 [thread overview]
Message-ID: <20060612113637.GA14136@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.58.0606121404080.7129@sbz-30.cs.Helsinki.FI>
* Pekka J Enberg <penberg@cs.Helsinki.FI> wrote:
> On Mon, 12 Jun 2006, Ingo Molnar wrote:
> > While it's always good to reduce the amount of false positives, i dont
> > think it's unacceptable for inclusion right now. A few dozen annotations
> > out of 7000+ allocation call sites isnt a big maintainance problem - and
> > the benefits of automatic leak-checking are really huge.
>
> Did you look at the call sites? It seems clear that kmemleak doesn't
> support existing kernel coding style yet (see below) which means we're
> not covering all false positives.
but "supporting existing kernel coding style as-is" is not a must-have
criterium for inclusion. While preserving semantics is strongly
encouraged of course, a patch can change semantics (or can introduce
restrictions) as long as it's common-sense or there is no other way out.
The question is benefit vs. disadvantage, not a rigid "does it change
semantics" rule.
Just look at Sparse annotations: they add maintainance overhead, but the
overhead is well worth the trouble: they avoid bugs and they also serve
as documentation/specification. And Sparse annotations are alot more
numerous than kmemleak annotations will ever be!
> On Mon, 12 Jun 2006, Ingo Molnar wrote:
> > What i'd like to see though are clear explanations about why an
> > allocation is not considered a leak, in terms of comments added to the
> > code. That will also help us reduce the number of annotations later on.
>
> I found at least two unacceptable false positive classes:
>
> - arch/i386/kernel/setup.c:
> False positive because res pointer is stored in a global instance of
> struct resource.
there's no good way around this one but to annotate it in one way or
another.
We could express the non-leak nature of this allocation in a cleaner way
by introducing the following API:
memleak_boot_time_alloc(res);
Here kmemleak should build a global list of such allocations, with the
following rules: these allocations must not be freed after that point,
but these allocations will be searched for further pointers.
Via this method we will both document the special nature of these
allocations and we'll enforce that it's not freed. (not that there is a
high likelyhood of freeing a buffer whose pointer nobody knows - the
purpose is rather to make sure that the annotation is correct)
> - drivers/base/platform.c and fs/ext3/dir.c:
> False positive because we allocate memory for struct + some extra
> stuff.
>
> At least the latter can be fixed as outlined by Catalin in another
> mail.
yes.
my "document the exceptions" request was to make sure that such special
rules are not forgotten. As long as they are documented clearly, if
there's some common pattern between a number of them then they can be
moved into the kmemleak infrastructure, to further reduce the annotation
overhead.
Ingo
next prev parent reply other threads:[~2006-06-12 11:37 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-11 11:18 [PATCH 2.6.17-rc6 0/9] Kernel memory leak detector 0.7 Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 1/9] Base support for kmemleak Catalin Marinas
2006-06-13 11:14 ` Pekka Enberg
2006-06-13 12:47 ` Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 2/9] Some documentation " Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 3/9] Add the memory allocation/freeing hooks " Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 4/9] Modules support " Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 5/9] Add kmemleak support for i386 Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 6/9] Add kmemleak support for ARM Catalin Marinas
2006-06-11 11:21 ` [PATCH 2.6.17-rc6 7/9] Remove some of the kmemleak false positives Catalin Marinas
2006-06-12 5:19 ` Pekka Enberg
2006-06-12 8:11 ` Catalin Marinas
2006-06-12 8:17 ` Pekka J Enberg
2006-06-12 8:43 ` Catalin Marinas
2006-06-12 10:53 ` Ingo Molnar
2006-06-12 11:08 ` Pekka J Enberg
2006-06-12 11:36 ` Ingo Molnar [this message]
2006-06-12 11:56 ` Pekka J Enberg
2006-06-12 12:53 ` Catalin Marinas
2006-06-12 13:12 ` Ingo Molnar
2006-06-12 14:38 ` Catalin Marinas
2006-06-12 22:29 ` Catalin Marinas
2006-06-12 12:56 ` Catalin Marinas
2006-06-12 19:22 ` Ingo Molnar
2006-06-12 22:24 ` Catalin Marinas
2006-06-13 5:53 ` Pekka J Enberg
2006-06-13 6:59 ` Catalin Marinas
2006-06-13 7:57 ` Pekka J Enberg
2006-06-13 9:45 ` Catalin Marinas
2006-06-13 10:04 ` Pekka Enberg
2006-06-13 10:37 ` Catalin Marinas
2006-06-13 7:26 ` Ingo Molnar
2006-06-13 8:11 ` Pekka J Enberg
2006-06-13 10:49 ` Catalin Marinas
2006-06-14 4:07 ` Ingo Molnar
2006-06-14 5:46 ` Andi Kleen
2006-06-14 5:53 ` Jeremy Fitzhardinge
2006-06-14 12:03 ` Ingo Molnar
2006-06-14 13:46 ` Catalin Marinas
2006-06-14 13:35 ` Catalin Marinas
2006-06-14 13:21 ` Catalin Marinas
2006-06-12 9:17 ` Peter Zijlstra
2006-06-12 9:35 ` Catalin Marinas
2006-06-24 10:20 ` Catalin Marinas
2006-06-24 10:22 ` Ingo Molnar
2006-06-24 10:55 ` Catalin Marinas
2006-07-24 11:15 ` Ingo Molnar
2006-07-24 13:28 ` Catalin Marinas
2006-08-03 6:32 ` Jakub Jelinek
2006-08-03 8:31 ` Catalin Marinas
2006-06-11 11:22 ` [PATCH 2.6.17-rc6 8/9] Simple testing for kmemleak Catalin Marinas
2006-06-11 11:22 ` [PATCH 2.6.17-rc6 9/9] Keep the __init functions after initialization Catalin Marinas
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=20060612113637.GA14136@elte.hu \
--to=mingo@elte.hu \
--cc=catalin.marinas@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@cs.Helsinki.FI \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox