mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-21 11:26:59 +00:00
ebbeb55561
Also add script used to generate patches and SRC_URI Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
53 lines
1.9 KiB
Diff
53 lines
1.9 KiB
Diff
From 1a3341ff80be39daad523f56898e5dbba8a89452 Mon Sep 17 00:00:00 2001
|
|
From: Jiang Liu <liuj97@gmail.com>
|
|
Date: Fri, 3 Feb 2012 15:37:16 -0800
|
|
Subject: [PATCH 23/87] kprobes: fix a memory leak in function
|
|
pre_handler_kretprobe()
|
|
|
|
commit 55ca6140e9bb307efc97a9301a4f501de02a6fd6 upstream.
|
|
|
|
In function pre_handler_kretprobe(), the allocated kretprobe_instance
|
|
object will get leaked if the entry_handler callback returns non-zero.
|
|
This may cause all the preallocated kretprobe_instance objects exhausted.
|
|
|
|
This issue can be reproduced by changing
|
|
samples/kprobes/kretprobe_example.c to probe "mutex_unlock". And the fix
|
|
is straightforward: just put the allocated kretprobe_instance object back
|
|
onto the free_instances list.
|
|
|
|
[akpm@linux-foundation.org: use raw_spin_lock/unlock]
|
|
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
|
|
Acked-by: Jim Keniston <jkenisto@us.ibm.com>
|
|
Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
|
|
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
|
|
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
|
|
Cc: "David S. Miller" <davem@davemloft.net>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
kernel/kprobes.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
|
|
index 52fd049..faa39d1 100644
|
|
--- a/kernel/kprobes.c
|
|
+++ b/kernel/kprobes.c
|
|
@@ -1673,8 +1673,12 @@ static int __kprobes pre_handler_kretprobe(struct kprobe *p,
|
|
ri->rp = rp;
|
|
ri->task = current;
|
|
|
|
- if (rp->entry_handler && rp->entry_handler(ri, regs))
|
|
+ if (rp->entry_handler && rp->entry_handler(ri, regs)) {
|
|
+ raw_spin_lock_irqsave(&rp->lock, flags);
|
|
+ hlist_add_head(&ri->hlist, &rp->free_instances);
|
|
+ raw_spin_unlock_irqrestore(&rp->lock, flags);
|
|
return 0;
|
|
+ }
|
|
|
|
arch_prepare_kretprobe(ri, regs);
|
|
|
|
--
|
|
1.7.9.4
|
|
|