kprobes: Sanitize struct kretprobe_instance allocations
For as long as kretprobes have existed, we've allocated NR_CPUS instances of kretprobe_instance structures. With the default value of CONFIG_NR_CPUS increasing on certain architectures, we are potentially wasting kernel memory. See http://sourceware.org/bugzilla/show_bug.cgi?id=10839#c3 for more details. Use a saner num_possible_cpus() instead of NR_CPUS for allocation. Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Acked-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: Jim Keniston <jkenisto@us.ibm.com> Cc: fweisbec@gmail.com LKML-Reference: <20091030135310.GA22230@in.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
5e9b397292
commit
4dae560f97
|
@ -1014,9 +1014,9 @@ int __kprobes register_kretprobe(struct kretprobe *rp)
|
||||||
/* Pre-allocate memory for max kretprobe instances */
|
/* Pre-allocate memory for max kretprobe instances */
|
||||||
if (rp->maxactive <= 0) {
|
if (rp->maxactive <= 0) {
|
||||||
#ifdef CONFIG_PREEMPT
|
#ifdef CONFIG_PREEMPT
|
||||||
rp->maxactive = max(10, 2 * NR_CPUS);
|
rp->maxactive = max(10, 2 * num_possible_cpus());
|
||||||
#else
|
#else
|
||||||
rp->maxactive = NR_CPUS;
|
rp->maxactive = num_possible_cpus();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
spin_lock_init(&rp->lock);
|
spin_lock_init(&rp->lock);
|
||||||
|
|
Reference in New Issue