lkml.org 
[lkml]   [2008]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH 03/15] kmemleak: Add the slab memory allocation/freeing hooks
Hi Catalin,

Catalin Marinas wrote:
> @@ -2610,6 +2611,13 @@ static struct slab *alloc_slabmgmt(struct kmem_cache *cachep, void *objp,
> /* Slab management obj is off-slab. */
> slabp = kmem_cache_alloc_node(cachep->slabp_cache,
> local_flags & ~GFP_THISNODE, nodeid);
> + /*
> + * Only scan the list member to avoid false negatives
> + * (especially caused by the s_mem pointer)
> + */

Heh, I run into this part again and as I have a long term memory of a
goldfish I had to look up the discussion we had. So may I suggest you
change the comment to:

/*
* If the first object in the slab is leaked (it's allocated but no
* one has a reference to it), we want to make sure kmemleak does not
* treat the ->s_mem pointer as a reference to the object. Otherwise
* we will not report the leak.
*/

> + memleak_scan_area(slabp, offsetof(struct slab, list),
> + sizeof(struct list_head),
> + local_flags & ~GFP_THISNODE);
> if (!slabp)
> return NULL;
> } else {
> @@ -3195,6 +3203,8 @@ static inline void *____cache_alloc(struct kmem_cache *cachep, gfp_t flags)
> STATS_INC_ALLOCMISS(cachep);
> objp = cache_alloc_refill(cachep, flags);
> }
> + /* avoid false negatives */
> + memleak_erase(&ac->entry[ac->avail]);

For this, maybe something like this:

/*
* To avoid a false negative, if an object that is in one of the
* per-CPU caches is leaked, we need to make sure kmemleak doesn't
* treat the array pointers as a reference to the object.
*/
> return objp;
> }
>

Do you take care of the per-node lists as well?


\
 
 \ /
  Last update: 2008-12-11 22:29    [W:0.386 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site