All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org,
	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	linux-arch@vger.kernel.org
Subject: [RFC PATCH -tip v5 13/27] kprobes: Don't check the ->break_handler() in generic kprobes code
Date: Tue,  5 Jun 2018 00:54:49 +0900	[thread overview]
Message-ID: <152812768890.10068.10235293822737888531.stgit@devbox> (raw)
In-Reply-To: <152812730943.10068.5166429445118734697.stgit@devbox>

Don't check the ->break_handler() from the core kprobes code,
because it was only used by jprobes which got removed.

( In followup patches we'll remove the remaining calls in low level
  arch handlers as well and remove the callback altogether. )

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 Documentation/kprobes.txt |    2 +-
 kernel/kprobes.c          |   39 +++++----------------------------------
 2 files changed, 6 insertions(+), 35 deletions(-)

diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 5ae80baf3921..907a3017c0f2 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -262,7 +262,7 @@ is optimized, that modification is ignored.  Thus, if you want to
 tweak the kernel's execution path, you need to suppress optimization,
 using one of the following techniques:
 
-- Specify an empty function for the kprobe's post_handler or break_handler.
+- Specify an empty function for the kprobe's post_handler.
 
 or
 
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 69de130595f7..536ab451e96d 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -627,8 +627,8 @@ static void optimize_kprobe(struct kprobe *p)
 	    (kprobe_disabled(p) || kprobes_all_disarmed))
 		return;
 
-	/* Both of break_handler and post_handler are not supported. */
-	if (p->break_handler || p->post_handler)
+	/* kprobes with post_handler can not be optimized */
+	if (p->post_handler)
 		return;
 
 	op = container_of(p, struct optimized_kprobe, kp);
@@ -1116,20 +1116,6 @@ static int aggr_fault_handler(struct kprobe *p, struct pt_regs *regs,
 }
 NOKPROBE_SYMBOL(aggr_fault_handler);
 
-static int aggr_break_handler(struct kprobe *p, struct pt_regs *regs)
-{
-	struct kprobe *cur = __this_cpu_read(kprobe_instance);
-	int ret = 0;
-
-	if (cur && cur->break_handler) {
-		if (cur->break_handler(cur, regs))
-			ret = 1;
-	}
-	reset_kprobe_instance();
-	return ret;
-}
-NOKPROBE_SYMBOL(aggr_break_handler);
-
 /* Walks the list and increments nmissed count for multiprobe case */
 void kprobes_inc_nmissed_count(struct kprobe *p)
 {
@@ -1270,24 +1256,15 @@ static void cleanup_rp_inst(struct kretprobe *rp)
 }
 NOKPROBE_SYMBOL(cleanup_rp_inst);
 
-/*
-* Add the new probe to ap->list. Fail if this is the
-* second break_handler at the address
-*/
+/* Add the new probe to ap->list */
 static int add_new_kprobe(struct kprobe *ap, struct kprobe *p)
 {
 	BUG_ON(kprobe_gone(ap) || kprobe_gone(p));
 
-	if (p->break_handler || p->post_handler)
+	if (p->post_handler)
 		unoptimize_kprobe(ap, true);	/* Fall back to normal kprobe */
 
-	if (p->break_handler) {
-		if (ap->break_handler)
-			return -EEXIST;
-		list_add_tail_rcu(&p->list, &ap->list);
-		ap->break_handler = aggr_break_handler;
-	} else
-		list_add_rcu(&p->list, &ap->list);
+	list_add_rcu(&p->list, &ap->list);
 	if (p->post_handler && !ap->post_handler)
 		ap->post_handler = aggr_post_handler;
 
@@ -1310,8 +1287,6 @@ static void init_aggr_kprobe(struct kprobe *ap, struct kprobe *p)
 	/* We don't care the kprobe which has gone. */
 	if (p->post_handler && !kprobe_gone(p))
 		ap->post_handler = aggr_post_handler;
-	if (p->break_handler && !kprobe_gone(p))
-		ap->break_handler = aggr_break_handler;
 
 	INIT_LIST_HEAD(&ap->list);
 	INIT_HLIST_NODE(&ap->hlist);
@@ -1706,8 +1681,6 @@ static int __unregister_kprobe_top(struct kprobe *p)
 		goto disarmed;
 	else {
 		/* If disabling probe has special handlers, update aggrprobe */
-		if (p->break_handler && !kprobe_gone(p))
-			ap->break_handler = NULL;
 		if (p->post_handler && !kprobe_gone(p)) {
 			list_for_each_entry_rcu(list_p, &ap->list, list) {
 				if ((list_p != p) && (list_p->post_handler))
@@ -1911,7 +1884,6 @@ int register_kretprobe(struct kretprobe *rp)
 	rp->kp.pre_handler = pre_handler_kretprobe;
 	rp->kp.post_handler = NULL;
 	rp->kp.fault_handler = NULL;
-	rp->kp.break_handler = NULL;
 
 	/* Pre-allocate memory for max kretprobe instances */
 	if (rp->maxactive <= 0) {
@@ -2034,7 +2006,6 @@ static void kill_kprobe(struct kprobe *p)
 		list_for_each_entry_rcu(kp, &p->list, list)
 			kp->flags |= KPROBE_FLAG_GONE;
 		p->post_handler = NULL;
-		p->break_handler = NULL;
 		kill_optimized_kprobe(p);
 	}
 	/*

  parent reply	other threads:[~2018-06-04 15:55 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-04 15:48 [RFC PATCH -tip v5 00/27] kprobes: Cleanup jprobe implementation Masami Hiramatsu
2018-06-04 15:49 ` [RFC PATCH -tip v5 01/27] Documentation/kprobes: Fix to remove remaining jprobe Masami Hiramatsu
2018-06-04 15:49   ` Masami Hiramatsu
2018-06-04 15:49 ` [RFC PATCH -tip v5 02/27] kprobes: Remove jprobe API implementation Masami Hiramatsu
2018-06-04 15:49 ` [RFC PATCH -tip v5 03/27] kprobes/x86: Remove jprobe implementation Masami Hiramatsu
2018-06-04 15:50 ` [RFC PATCH -tip v5 04/27] ARC: kprobes: " Masami Hiramatsu
2018-06-04 15:50   ` Masami Hiramatsu
2018-06-04 15:50 ` [RFC PATCH -tip v5 05/27] ARM: kprobes: Remove jprobe arm implementation Masami Hiramatsu
2018-06-04 15:50   ` Masami Hiramatsu
2018-06-04 15:51 ` [RFC PATCH -tip v5 06/27] arm64: kprobes: Remove jprobe implementation Masami Hiramatsu
2018-06-04 15:51   ` Masami Hiramatsu
2018-06-05 15:34   ` Will Deacon
2018-06-05 15:34     ` Will Deacon
2018-06-06  4:42     ` Masami Hiramatsu
2018-06-06  4:42       ` Masami Hiramatsu
2018-06-04 15:51 ` [RFC PATCH -tip v5 07/27] powerpc/kprobes: Remove jprobe powerpc implementation Masami Hiramatsu
2018-06-07 11:31   ` Naveen N. Rao
2018-06-07 11:31     ` Naveen N. Rao
2018-06-07 14:23     ` Masami Hiramatsu
2018-06-04 15:52 ` [RFC PATCH -tip v5 08/27] ia64: kprobes: Remove jprobe implementation Masami Hiramatsu
2018-06-04 15:52   ` Masami Hiramatsu
2018-06-04 15:52 ` [RFC PATCH -tip v5 09/27] MIPS: " Masami Hiramatsu
2018-06-04 15:53 ` [RFC PATCH -tip v5 10/27] s390/kprobes: " Masami Hiramatsu
2018-06-04 15:53 ` [RFC PATCH -tip v5 11/27] sh: kprobes: " Masami Hiramatsu
2018-06-04 15:53   ` Masami Hiramatsu
2018-06-04 15:54 ` [RFC PATCH -tip v5 12/27] sparc64: " Masami Hiramatsu
2018-06-04 15:54   ` Masami Hiramatsu
2018-06-04 15:54 ` Masami Hiramatsu [this message]
2018-06-04 15:55 ` [RFC PATCH -tip v5 14/27] kprobes/x86: Don't call ->break_handler() in x86 kprobes Masami Hiramatsu
2018-06-04 15:55 ` [RFC PATCH -tip v5 15/27] ARC: kprobes: Don't call the ->break_handler() in ARC kprobes code Masami Hiramatsu
2018-06-04 15:55   ` Masami Hiramatsu
2018-06-04 15:56 ` [RFC PATCH -tip v5 16/27] ARM: kprobes: Don't call the ->break_handler() in arm " Masami Hiramatsu
2018-06-04 15:56   ` Masami Hiramatsu
2018-06-04 15:56 ` [RFC PATCH -tip v5 17/27] arm64: " Masami Hiramatsu
2018-06-04 15:56   ` Masami Hiramatsu
2018-06-05 15:37   ` Will Deacon
2018-06-05 15:37     ` Will Deacon
2018-06-04 15:57 ` [RFC PATCH -tip v5 18/27] powerpc/kprobes: " Masami Hiramatsu
2018-06-07 11:37   ` Naveen N. Rao
2018-06-07 11:37     ` Naveen N. Rao
2018-06-07 14:28     ` Masami Hiramatsu
2018-06-07 16:37       ` Naveen N. Rao
2018-06-07 16:37         ` Naveen N. Rao
2018-06-08  0:42         ` Masami Hiramatsu
2018-06-04 15:57 ` [RFC PATCH -tip v5 19/27] ia64: kprobes: Don't call the ->break_handler() in ia64 " Masami Hiramatsu
2018-06-04 15:57   ` Masami Hiramatsu
2018-06-04 15:58 ` [RFC PATCH -tip v5 20/27] MIPS: kprobes: Don't call the ->break_handler() in MIPS " Masami Hiramatsu
2018-06-04 15:58 ` [RFC PATCH -tip v5 21/27] s390/kprobes: Don't call the ->break_handler() in s390 " Masami Hiramatsu
2018-06-04 15:59 ` [RFC PATCH -tip v5 22/27] sh: kprobes: Don't call the ->break_handler() in SH " Masami Hiramatsu
2018-06-04 15:59   ` Masami Hiramatsu
2018-06-04 15:59 ` [RFC PATCH -tip v5 23/27] sparc64: kprobes: Don't call the ->break_handler() in sparc64 " Masami Hiramatsu
2018-06-04 15:59   ` Masami Hiramatsu
2018-06-04 16:00 ` [RFC PATCH -tip v5 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in kpr Masami Hiramatsu
2018-06-04 16:00   ` [RFC PATCH -tip v5 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in kprobe Masami Hiramatsu
2018-06-04 16:00   ` Masami Hiramatsu
2018-06-04 16:00   ` Masami Hiramatsu
2018-06-04 16:00   ` Masami Hiramatsu
2018-06-07 11:42   ` Naveen N. Rao
2018-06-07 11:54     ` [RFC PATCH -tip v5 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in Naveen N. Rao
2018-06-07 11:42     ` [RFC PATCH -tip v5 24/27] bpf: error-inject: kprobes: Clear current_kprobe and enable preempt in kprobe Naveen N. Rao
2018-06-07 11:42     ` Naveen N. Rao
2018-06-07 11:42     ` Naveen N. Rao
2018-06-07 11:42     ` Naveen N. Rao
2018-06-04 16:00 ` [RFC PATCH -tip v5 25/27] kprobes/x86: Do not disable preempt on int3 path Masami Hiramatsu
2018-06-04 16:00   ` Masami Hiramatsu
2018-06-04 16:01 ` [RFC PATCH -tip v5 26/27] Documentation: kprobes: Add how to change the execution path Masami Hiramatsu
2018-06-04 16:01   ` Masami Hiramatsu
2018-06-04 16:01 ` [RFC PATCH -tip v5 27/27] kprobes: Remove jprobe stub API Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=152812768890.10068.10235293822737888531.stgit@devbox \
    --to=mhiramat@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.