diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-30 22:04:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-30 22:04:53 -0400 |
commit | e83c2b0ff325f52dda1aff3572d0e1516216c54b (patch) | |
tree | 0d9dd56df33a308d03c8ac2d666826017777f0cf /kernel | |
parent | 9fcfc91bda04259abb9af2fd83bbf48d19da8502 (diff) | |
parent | 12de38b186c2af97bf0b4a1f907f766df46b1def (diff) |
Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6
* 'kmemleak' of git://linux-arm.org/linux-2.6:
kmemleak: Inform kmemleak about pid_hash
kmemleak: Do not warn if an unknown object is freed
kmemleak: Do not report new leaked objects if the scanning was stopped
kmemleak: Slightly change the policy on newly allocated objects
kmemleak: Do not trigger a scan when reading the debug/kmemleak file
kmemleak: Simplify the reports logged by the scanning thread
kmemleak: Enable task stacks scanning by default
kmemleak: Allow the early log buffer to be configurable.
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 @@ | |||
36 | #include <linux/pid_namespace.h> | 36 | #include <linux/pid_namespace.h> |
37 | #include <linux/init_task.h> | 37 | #include <linux/init_task.h> |
38 | #include <linux/syscalls.h> | 38 | #include <linux/syscalls.h> |
39 | #include <linux/kmemleak.h> | ||
39 | 40 | ||
40 | #define pid_hashfn(nr, ns) \ | 41 | #define pid_hashfn(nr, ns) \ |
41 | hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift) | 42 | hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift) |
@@ -512,6 +513,12 @@ void __init pidhash_init(void) | |||
512 | pid_hash = alloc_bootmem(pidhash_size * sizeof(*(pid_hash))); | 513 | pid_hash = alloc_bootmem(pidhash_size * sizeof(*(pid_hash))); |
513 | if (!pid_hash) | 514 | if (!pid_hash) |
514 | panic("Could not alloc pidhash!\n"); | 515 | panic("Could not alloc pidhash!\n"); |
516 | /* | ||
517 | * pid_hash contains references to allocated struct pid objects and it | ||
518 | * must be scanned by kmemleak to avoid false positives. | ||
519 | */ | ||
520 | kmemleak_alloc(pid_hash, pidhash_size * sizeof(*(pid_hash)), 0, | ||
521 | GFP_KERNEL); | ||
515 | for (i = 0; i < pidhash_size; i++) | 522 | for (i = 0; i < pidhash_size; i++) |
516 | INIT_HLIST_HEAD(&pid_hash[i]); | 523 | INIT_HLIST_HEAD(&pid_hash[i]); |
517 | } | 524 | } |