From: Catalin Marinas <catalin.marinas@gmail.com>
To: Jesper Juhl <jesper.juhl@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2.6.17-rc4 1/6] Base support for kmemleak
Date: Sun, 14 May 2006 08:24:03 +0100 [thread overview]
Message-ID: <4466DB13.5090104@gmail.com> (raw)
In-Reply-To: <9a8748490605131042w3214a7b8lb9a862798e3131d4@mail.gmail.com>
Jesper Juhl wrote:
> A few comments on your patch below.
Thanks.
> On 5/13/06, Catalin Marinas <catalin.marinas@gmail.com> wrote:
>> This patch adds the base support for the kernel memory leak detector. It
>> traces the memory allocation/freeing in a way similar to the Boehm's
>> conservative garbage collector, the difference being that the orphan
>> pointers are not freed but only shown in /proc/memleak. Enabling this
>
> /proc is such a mess already, do we have to add another file to it?
> How about using sysfs instead? I know that is "one value pr file", but
> then simply make one file pr leaked pointer or something like that...
I'll probably use debugfs.
>> +#define memleak_offsetof(type, member) \
>> + (__builtin_constant_p(&((type *) 0)->member) ? \
>> + ((size_t) &((type *) 0)->member) : 0)
>> +
>
>
> No spaces after the closing parenthesis of a cast and the value being
> cast please.
OK.
>> + only shown in /proc/memleak. Enabling this feature would
>> + introduce an overhead to memory allocations.
>
>
> Shouldn't that last bit read "Enabling this feature will introduce
> overhead to memory allocations." ?
Yes, indeed.
> You seem to be very fond of double empty lines, here and elsewhere.
> Surely just a single blank line would do just fine in many places -
> no?
That's just my style I seem to also add to many single empty lines but I
don't have any problem with removing them.
>> +static inline void delete_pointer(unsigned long ptr)
>
>
> "inline" ? Isn't this function a little too fat for that?
Not really since it is only called from one place and there won't be any
size overhead (there might not be a big speed gain either). I wanted to
separate the deleting algorithm from the locking in memleak_free.
>> +/* Freeing function hook
>> + */
>
>
> A lot of lines could be saved if all these small comments were on a
> single line instead...
OK.
>> +static void memleak_scan(void)
>> +{
>> + unsigned long flags;
>> + struct memleak_pointer *pointer;
>> + struct task_struct *task;
>> + int node;
>> +#ifdef CONFIG_SMP
>> + int i;
>> +#endif
>
> Why not just get rid of `i' and just use the `node' variable in the
> single location where `i' is used (or get rid of `node' and use `i' in
> its place) ?
OK.
>> + return (n != &pointer_list)
>> + ? list_entry(n, struct memleak_pointer, pointer_list)
>> + : NULL;
>
>
> Wouldn't this be more readable as
>
> if (n != &pointer_list)
> return list_entry(n, struct memleak_pointer, pointer_list);
> return NULL
Indeed, I'll change it.
>> +int __init memleak_init(void)
>> +{
>> + struct memleak_offset *ml_off;
>> + int aliases = 0;
>> + unsigned long flags;
>> +
>> + printk(KERN_INFO "Kernel memory leak detector\n");
>
>
> How about moving this printk() to the end of memleak_init() and changing
> it to :
>
> printk(KERN_INFO "Kernel memory leak detector initialized.\n");
OK.
>> +#if 0
>> + /* make some orphan pointers for testing */
>> + kmalloc(32, GFP_KERNEL);
>> + kmalloc(32, GFP_KERNEL);
>> + kmem_cache_alloc(pointer_cache, GFP_ATOMIC);
>> + kmem_cache_alloc(pointer_cache, GFP_ATOMIC);
>> + vmalloc(64);
>> + vmalloc(64);
>> +#endif
>
> Stuff for testing is nice, but do we have to add it to the kernel? - I
> assume you are done testing :-)
> We have waay too much code already in the kernel inside #if 0
The best would be to test it using a loadable module but I did most of
the work on an embedded ARM platform where it was much easier to add
some code directly. The code will be cleaned up in subsequent versions.
Thanks again,
Catalin
next prev parent reply other threads:[~2006-05-14 7:24 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-13 15:57 [RFC PATCH 2.6.17-rc4 0/6] Kernel memory leak detector Catalin Marinas
2006-05-13 16:05 ` [PATCH 2.6.17-rc4 1/6] Base support for kmemleak Catalin Marinas
2006-05-13 17:42 ` Jesper Juhl
2006-05-13 17:47 ` Roland Dreier
2006-05-14 7:24 ` Catalin Marinas [this message]
2006-05-14 17:32 ` Ingo Oeser
2006-05-15 10:15 ` Catalin Marinas
2006-05-13 18:11 ` Paul Jackson
2006-05-13 23:20 ` Andi Kleen
2006-05-14 8:19 ` Catalin Marinas
2006-05-15 9:15 ` Andi Kleen
2006-05-15 10:09 ` Catalin Marinas
2006-05-26 8:59 ` Ingo Molnar
2006-05-26 9:39 ` Andi Kleen
2006-05-26 11:31 ` Ingo Molnar
2006-05-26 16:37 ` Catalin Marinas
2006-05-26 17:47 ` Ingo Molnar
2006-05-26 21:49 ` Catalin Marinas
2006-05-26 22:01 ` Catalin Marinas
2006-05-14 14:53 ` Pekka Enberg
2006-05-14 15:30 ` Catalin Marinas
2006-05-14 15:52 ` Catalin Marinas
2006-05-13 16:05 ` [PATCH 2.6.17-rc4 2/6] Some documentation " Catalin Marinas
2006-05-13 16:06 ` [PATCH 2.6.17-rc4 3/6] Add the memory allocation/freeing hooks " Catalin Marinas
2006-05-14 14:49 ` Pekka Enberg
2006-05-13 16:06 ` [PATCH 2.6.17-rc4 4/6] Add kmemleak support for i386 Catalin Marinas
2006-05-13 18:24 ` Jesper Juhl
2006-05-13 21:20 ` Jan Engelhardt
2006-05-14 7:28 ` Catalin Marinas
2006-05-13 16:06 ` [PATCH 2.6.17-rc4 5/6] Add kmemleak support for ARM Catalin Marinas
2006-05-13 18:25 ` Jesper Juhl
2006-05-13 16:06 ` [PATCH 2.6.17-rc4 6/6] Remove some of the kmemleak false positives Catalin Marinas
2006-05-13 19:21 ` Jesper Juhl
2006-05-14 7:31 ` Catalin Marinas
2006-05-14 14:55 ` Pekka Enberg
2006-05-14 15:39 ` Catalin Marinas
2006-05-14 17:39 ` Ingo Oeser
2006-05-15 10:12 ` Catalin Marinas
2006-05-15 18:32 ` Ingo Oeser
2006-05-15 11:52 ` Avi Kivity
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=4466DB13.5090104@gmail.com \
--to=catalin.marinas@gmail.com \
--cc=jesper.juhl@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox