[PATCH] Add kmemleak annotations to lmb.c
Michael Ellerman
michael at ellerman.id.au
Thu Aug 13 13:01:07 EST 2009
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 at ellerman.id.au>
---
lib/lmb.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/lib/lmb.c b/lib/lmb.c
index e4a6482..b82779a 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -14,6 +14,7 @@
#include <linux/init.h>
#include <linux/bitops.h>
#include <linux/lmb.h>
+#include <linux/kmemleak.h>
#define LMB_ALLOC_ANYWHERE 0
@@ -352,8 +353,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 +415,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;
--
1.6.2.1
More information about the Linuxppc-dev
mailing list