summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-04-11 05:24:22 +0200
committerDavid S. Miller <davem@davemloft.net>2010-04-13 08:46:17 +0200
commit25ad403f67d7673f38a473ec138d240804785ae3 (patch)
tree8ec027a5cd22ad1a2a53e630bae74e356490d3e9
parentsparc64: Support kmemleak. (diff)
downloadlinux-25ad403f67d7673f38a473ec138d240804785ae3.tar.xz
linux-25ad403f67d7673f38a473ec138d240804785ae3.zip
sparc64: Add kmemleak annotation to sun4v_build_virq()
The only reference we store to this memory is in the form of a physical address, so kmemleak can't see it. Add a kmemleak_not_leak() annotation. It's probably useful to be able to look at a dump of these things either via debugfs or similar, and thus we could at some point store them in some kind of table and therefore get rid of this annotation. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc/kernel/irq_64.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index af5c76c04e99..454ce3a25273 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -648,6 +648,14 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC);
if (unlikely(!bucket))
return 0;
+
+ /* The only reference we store to the IRQ bucket is
+ * by physical address which kmemleak can't see, tell
+ * it that this object explicitly is not a leak and
+ * should be scanned.
+ */
+ kmemleak_not_leak(bucket);
+
__flush_dcache_range((unsigned long) bucket,
((unsigned long) bucket +
sizeof(struct ino_bucket)));