Commit-ID: cbdd96f5586151e48317d90a403941ec23f12660 Gitweb: https://git.kernel.org/tip/cbdd96f5586151e48317d90a403941ec23f12660 Author: Masami Hiramatsu <mhira...@kernel.org> AuthorDate: Tue, 11 Sep 2018 19:21:09 +0900 Committer: Ingo Molnar <mi...@kernel.org> CommitDate: Wed, 12 Sep 2018 08:01:16 +0200
kprobes: Don't call BUG_ON() if there is a kprobe in use on free list Instead of calling BUG_ON(), if we find a kprobe in use on free kprobe list, just remove it from the list and keep it on kprobe hash list as same as other in-use kprobes. Signed-off-by: Masami Hiramatsu <mhira...@kernel.org> Cc: Anil S Keshavamurthy <anil.s.keshavamur...@intel.com> Cc: David S . Miller <da...@davemloft.net> Cc: Linus Torvalds <torva...@linux-foundation.org> Cc: Naveen N . Rao <naveen.n....@linux.vnet.ibm.com> Cc: Peter Zijlstra <pet...@infradead.org> Cc: Thomas Gleixner <t...@linutronix.de> Link: http://lkml.kernel.org/r/153666126882.21306.10738207224288507996.stgit@devbox Signed-off-by: Ingo Molnar <mi...@kernel.org> --- kernel/kprobes.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 63c342e5e6c3..90e98e233647 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -546,8 +546,14 @@ static void do_free_cleaned_kprobes(void) struct optimized_kprobe *op, *tmp; list_for_each_entry_safe(op, tmp, &freeing_list, list) { - BUG_ON(!kprobe_unused(&op->kp)); list_del_init(&op->list); + if (WARN_ON_ONCE(!kprobe_unused(&op->kp))) { + /* + * This must not happen, but if there is a kprobe + * still in use, keep it on kprobes hash list. + */ + continue; + } free_aggr_kprobe(&op->kp); } }