From: ebiederm@xmission.com (Eric W. Biederman)
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: "linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>,
majianpeng <majianpeng@gmail.com>
Subject: Re: Possible memory leaks in proc_sysctl.c
Date: Wed, 18 Apr 2012 08:44:27 -0700 [thread overview]
Message-ID: <m1ehrloxic.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <20120418151545.GI1505@arm.com> (Catalin Marinas's message of "Wed, 18 Apr 2012 16:15:45 +0100")
Catalin Marinas <catalin.marinas@arm.com> writes:
> On Wed, Apr 18, 2012 at 03:52:58PM +0100, Eric W. Biederman wrote:
>> Catalin Marinas <catalin.marinas@arm.com> writes:
>> > On Wed, Apr 18, 2012 at 02:22:09PM +0100, Eric W. Biederman wrote:
>> >> Catalin Marinas <catalin.marinas@arm.com> writes:
>> >> > Following your commit f728019bb (sysctl: register only tables of sysctl
>> >> > files), I get several kmemleak reports. They all seem to be header
>> >> > allocations with kzalloc() in __register_sysctl_table() and
>> >> > __register_sysctl_paths(). The patch isn't simple to quickly figure out
>> >> > what may be wrong.
>> >>
>> >> Due to a change in the data structure places where we register the
>> >> sysctl permanently and ignore the result from the register_sysctl_...
>> >> family of functions now report this leak.
>> >
>> > But is the header (or subheader, basically any pointer inside the
>> > kmalloc'ed object) never referenced from anywhere? I'm just trying to
>> > understand why kmemleak reports it as it seems that the header object is
>> > inserted in a ctl_dir.
>>
>> It is never reference from anywhere because we never free the structure.
>> The job of the header is to be the structure that tells us how to free
>> things.
>>
>> I see a couple of things going on.
>> - For compatibility the header that is returned is a dummy that just
>> points to the real headers.
>>
>> - Even without the compatibility we can get the same symptom if
>> we register an empty directory.
>>
>> So simply saying kmemleak shut up this is deliberate in these few cases
>> where we don't intend to unregister the structure and have a deliberate
>> leak seems the clean and maintainable way to go.
>
> OK, I got it now, sounds fair. But please add a comment to the
> kmemleak_not_leak() annotations so that others know it's a deliberate
> leak (rather than a false positive).
>
> Also the patch should include the linux/kmemleak.h file for the
> kmemleak_not_leak() prototype as header changes in the future may cause
> problems (I think the one you posted did not include it).
I will take a look when I merge the patch.
Would something like kmemleak_ignore() be better? What I want is
kmemleak_this_is_a_deliberate_leak_so_shut_up(), but the API doesn't
seem to exactly include that function. I'm not certain what the proper
name is as I haven't worked much with kmemleak.
Eric
next prev parent reply other threads:[~2012-04-18 15:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-18 10:12 Possible memory leaks in proc_sysctl.c Catalin Marinas
2012-04-18 13:22 ` Eric W. Biederman
2012-04-18 14:18 ` Catalin Marinas
2012-04-18 14:52 ` Eric W. Biederman
2012-04-18 15:15 ` Catalin Marinas
2012-04-18 15:44 ` Eric W. Biederman [this message]
2012-04-18 16:14 ` 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=m1ehrloxic.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=catalin.marinas@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=majianpeng@gmail.com \
/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.