diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-06-29 17:13:55 +0100 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2009-06-29 17:14:14 +0100 |
commit | 12de38b186c2af97bf0b4a1f907f766df46b1def (patch) | |
tree | de85488aa885f29933eec7e733b2e232401fd105 /kernel | |
parent | b6e687221eb840bacd4d4a991e5f8e7ed3ae910a (diff) | |
download | lwn-12de38b186c2af97bf0b4a1f907f766df46b1def.tar.gz lwn-12de38b186c2af97bf0b4a1f907f766df46b1def.zip |
kmemleak: Inform kmemleak about pid_hash
Kmemleak does not track alloc_bootmem calls but the pid_hash allocated
in pidhash_init() would need to be scanned as it contains pointers to
struct pid objects.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/pid.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/pid.c b/kernel/pid.c index 31310b5d3f50..5fa1db48d8b7 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -36,6 +36,7 @@ #include <linux/pid_namespace.h> #include <linux/init_task.h> #include <linux/syscalls.h> +#include <linux/kmemleak.h> #define pid_hashfn(nr, ns) \ hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift) @@ -512,6 +513,12 @@ void __init pidhash_init(void) pid_hash = alloc_bootmem(pidhash_size * sizeof(*(pid_hash))); if (!pid_hash) panic("Could not alloc pidhash!\n"); + /* + * pid_hash contains references to allocated struct pid objects and it + * must be scanned by kmemleak to avoid false positives. + */ + kmemleak_alloc(pid_hash, pidhash_size * sizeof(*(pid_hash)), 0, + GFP_KERNEL); for (i = 0; i < pidhash_size; i++) INIT_HLIST_HEAD(&pid_hash[i]); } |