summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorHugh Dickins <hughd@google.com>2010-05-14 19:44:10 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-05-26 14:32:09 -0700
commit6464a9f78632cdce047062512aeed584e66985c0 (patch)
tree85f9a45b791f1426de9bf5fa90c09d130462111d /kernel
parentbd2000ae380153185705f2e80f2c676c1a5337e6 (diff)
downloadkernel-crypto-6464a9f78632cdce047062512aeed584e66985c0.tar.gz
kernel-crypto-6464a9f78632cdce047062512aeed584e66985c0.tar.xz
kernel-crypto-6464a9f78632cdce047062512aeed584e66985c0.zip
profile: fix stats and data leakage
commit 16a2164bb03612efe79a76c73da6da44445b9287 upstream. If the kernel is large or the profiling step small, /proc/profile leaks data and readprofile shows silly stats, until readprofile -r has reset the buffer: clear the prof_buffer when it is vmalloc()ed. Signed-off-by: Hugh Dickins <hughd@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/profile.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/profile.c b/kernel/profile.c
index a55d3a367ae..dfadc5b729f 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -127,8 +127,10 @@ int __ref profile_init(void)
return 0;
prof_buffer = vmalloc(buffer_bytes);
- if (prof_buffer)
+ if (prof_buffer) {
+ memset(prof_buffer, 0, buffer_bytes);
return 0;
+ }
free_cpumask_var(prof_cpu_mask);
return -ENOMEM;