Message ID | 3437d193a392e9d365f18b3d90c52de95a590086.1249880734.git.michael@ellerman.id.au (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Mon, 2009-08-10 at 15:05 +1000, Michael Ellerman wrote: > We don't actually want kmemleak to track the lmb allocations, so we > pass min_count as 0. However telling kmemleak about lmb allocations > allows it to scan that memory for pointers to other memory that is > tracked by kmemleak, ie. slab allocations etc. > > Signed-off-by: Michael Ellerman <michael@ellerman.id.au> > --- > lib/lmb.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/lib/lmb.c b/lib/lmb.c > index e4a6482..dc10bc5 100644 > --- a/lib/lmb.c > +++ b/lib/lmb.c > @@ -352,8 +352,10 @@ u64 __init lmb_alloc_nid(u64 size, u64 align, int nid, > u64 ret = lmb_alloc_nid_region(&mem->region[i], > nid_range, > size, align, nid); > - if (ret != ~(u64)0) > + if (ret != ~(u64)0) { > + kmemleak_alloc(__va(ret), size, 0, 0); > return ret; > + } > } > > return lmb_alloc(size, align); > @@ -412,6 +414,8 @@ u64 __init __lmb_alloc_base(u64 size, u64 align, u64 max_addr) > /* this area isn't reserved, take it */ > if (lmb_add_region(&lmb.reserved, base, size) < 0) > return 0; > + > + kmemleak_alloc(__va(base), size, 0, 0); > return base; > } > res_base = lmb.reserved.region[j].base; This needs an include of kmemleak.h for some configs, new patch coming. cheers
diff --git a/lib/lmb.c b/lib/lmb.c index e4a6482..dc10bc5 100644 --- a/lib/lmb.c +++ b/lib/lmb.c @@ -352,8 +352,10 @@ u64 __init lmb_alloc_nid(u64 size, u64 align, int nid, u64 ret = lmb_alloc_nid_region(&mem->region[i], nid_range, size, align, nid); - if (ret != ~(u64)0) + if (ret != ~(u64)0) { + kmemleak_alloc(__va(ret), size, 0, 0); return ret; + } } return lmb_alloc(size, align); @@ -412,6 +414,8 @@ u64 __init __lmb_alloc_base(u64 size, u64 align, u64 max_addr) /* this area isn't reserved, take it */ if (lmb_add_region(&lmb.reserved, base, size) < 0) return 0; + + kmemleak_alloc(__va(base), size, 0, 0); return base; } res_base = lmb.reserved.region[j].base;
We don't actually want kmemleak to track the lmb allocations, so we pass min_count as 0. However telling kmemleak about lmb allocations allows it to scan that memory for pointers to other memory that is tracked by kmemleak, ie. slab allocations etc. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> --- lib/lmb.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)