All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org,
	Huacai Chen <chenhuacai@loongson.cn>,
	Jinyang He <hejinyang@loongson.cn>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	"Naveen N . Rao" <naveen.n.rao@linux.ibm.com>
Subject: Re: [PATCH -tip] x86/kprobes: Drop removed INT3 handling code
Date: Wed, 30 Nov 2022 01:28:17 +0900	[thread overview]
Message-ID: <20221130012817.638dea0fbf4b8abcd4a70019@kernel.org> (raw)
In-Reply-To: <20221128154905.23aa5d07@gandalf.local.home>

On Mon, 28 Nov 2022 15:49:05 -0500
Steven Rostedt <rostedt@goodmis.org> wrote:

> On Fri, 25 Nov 2022 23:44:47 +0900
> "Masami Hiramatsu (Google)" <mhiramat@kernel.org> wrote:
> 
> > From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> > 
> > Drop removed INT3 handling code from kprobe_int3_handler() because this
> > case (get_kprobe() doesn't return corresponding kprobe AND the INT3 is
> > removed) must not happen with the kprobe managed INT3, but can happen
> > with the non-kprobe INT3, which should be handled by other callbacks.
> > 
> > For the kprobe managed INT3, the arch_disarm_kprobe() removes the INT3
> > and then calls text_poke_sync(). Since this text_poke_sync() uses IPI
> > to call sync_core() on all online cpus, that ensures that all running
> > INT3 exception handlers have done.
> > And, the unregister_kprobe() will remove the kprobe from the hash table
> > after arch_disarm_kprobe().
> > 
> > Thus, when the kprobe managed INT3 hits, kprobe_int3_handler() should
> > be able to find corresponding kprobe always by get_kprobe(). If it can
> > not find any kprobe, this means that is NOT a kprobe managed INT3.
> > 
> 
> I believe this was fixed by:
> 
>   5c02ece81848d ("x86/kprobes: Fix ordering while text-patching")
> 
> That should be mentioned in the commit log.

Thanks for pointing! Yes, it ensures since it add text_poke_sync()
in arch_arm/disarm_kprobe(). So this is the last part of the
commit 5c02ece81848d.

> 
> Anyway, looks good.
> 
> Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>

Thank you!

> 
> -- Steve
> 
> 
> 
> > Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> > ---
> >  arch/x86/kernel/kprobes/core.c |   14 --------------
> >  1 file changed, 14 deletions(-)
> > 
> > diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
> > index 66299682b6b7..33390ed4dcf3 100644
> > --- a/arch/x86/kernel/kprobes/core.c
> > +++ b/arch/x86/kernel/kprobes/core.c
> > @@ -986,20 +986,6 @@ int kprobe_int3_handler(struct pt_regs *regs)
> >  			kprobe_post_process(p, regs, kcb);
> >  			return 1;
> >  		}
> > -	}
> > -
> > -	if (*addr != INT3_INSN_OPCODE) {
> > -		/*
> > -		 * The breakpoint instruction was removed right
> > -		 * after we hit it.  Another cpu has removed
> > -		 * either a probepoint or a debugger breakpoint
> > -		 * at this address.  In either case, no further
> > -		 * handling of this interrupt is appropriate.
> > -		 * Back up over the (now missing) int3 and run
> > -		 * the original instruction.
> > -		 */
> > -		regs->ip = (unsigned long)addr;
> > -		return 1;
> >  	} /* else: not a kprobe fault; let the kernel handle it */
> >  
> >  	return 0;
> 


-- 
Masami Hiramatsu (Google) <mhiramat@kernel.org>

      reply	other threads:[~2022-11-29 16:28 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-25 14:44 [PATCH -tip] x86/kprobes: Drop removed INT3 handling code Masami Hiramatsu (Google)
2022-11-28 20:49 ` Steven Rostedt
2022-11-29 16:28   ` Masami Hiramatsu [this message]

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=20221130012817.638dea0fbf4b8abcd4a70019@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=bp@alien8.de \
    --cc=chenhuacai@loongson.cn \
    --cc=hejinyang@loongson.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=naveen.n.rao@linux.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yangtiezhu@loongson.cn \
    /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.