All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hongyan Xia <hongyan.xia@transsion.com>
To: Mark Rutland <mark.rutland@arm.com>,
	Will Deacon <will@kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>
Cc: Jiazi Li <jiazi.li@transsion.com>, Pu Hu <hupu@transsion.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [RFC PATCH v2 0/4] Mark Kprobe debug exception paths noinstr
Date: Thu, 13 Aug 2026 06:47:31 +0000	[thread overview]
Message-ID: <cover.1786603168.git.hongyan.xia@transsion.com> (raw)

From: Hongyan Xia <hongyan.xia@transsion.com>

Commit 879a6754d3d1 ("arm64: kprobes: Only handle faults originating
from XOL slot") and 23f851ac0078 ("arm64: kprobes: Allow reentering
kprobes while single-stepping") band-aided two corner cases in the arm64
kprobe path: Nested page faults inside Kprobe and nested Kprobe SS
handling. Although the two patches were taken, Will asked whether we
should keep patching things like this each time we find a corner case,
and whether making Kprobe noinstr is the correct answer [1].

This series attempts to do exactly that: Making the Kprobe path noinstr.
The kprobe handlers become noinstr end to end. Apart from marking
functions noinstr, we also force-inline some static inline helper
functions because certain compilers still outline them, breaking
noinstr.

Note that arm64 has no objtool so at the moment noinstr is more of a
contract that must be followed, instead of actually enforcing control
flow. Instrumentation can still happen if someone with root privileges
does something stupid, but now it is regarded as a bug rather than a
legitimate use case that the kernel needs to cover.

[1] https://lore.kernel.org/all/alpuL10h7-OK2hFb@willie-the-truck/

Changed in v2:
- Remove instrumentation_{begin/end}() markers as they do nothing
- Fold __always_inline into the patches that actually need them
- Remove the debug exception path changes unrelated to Kprobe. This
  series is only about Kprobe for now 
- Drop the kprobe_page_fault() patch for now. It's a question whether we
  even need it at all. Will send a patch for it separately.

Hongyan Xia (4):
  arm64/entry: Make debug_exception_enter/exit() noinstr
  arm64/debug: Make the Kprobe functions noinstr
  arm64/kprobes: Make the entire Kprobe noinstr
  Revert "arm64: kprobes: Allow reentering kprobes while
    single-stepping"

 arch/arm64/include/asm/esr.h       |  2 +-
 arch/arm64/include/asm/kprobes.h   | 15 ++------
 arch/arm64/include/asm/percpu.h    |  2 +-
 arch/arm64/include/asm/preempt.h   |  4 +-
 arch/arm64/include/asm/ptrace.h    |  4 +-
 arch/arm64/kernel/debug-monitors.c |  6 +--
 arch/arm64/kernel/entry-common.c   | 13 ++-----
 arch/arm64/kernel/probes/kprobes.c | 59 ++++++++++--------------------
 include/linux/kprobes.h            |  8 ++--
 9 files changed, 38 insertions(+), 75 deletions(-)

-- 
2.47.3


             reply	other threads:[~2026-08-13  6:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-13  6:47 Hongyan Xia [this message]
2026-08-13  6:49 ` [RFC PATCH v2 1/4] arm64/entry: Make debug_exception_enter/exit() noinstr Hongyan Xia
2026-08-13  6:49 ` [RFC PATCH v2 2/4] arm64/debug: Make the Kprobe functions noinstr Hongyan Xia
2026-08-13  6:50 ` [RFC PATCH v2 3/4] arm64/kprobes: Make the entire Kprobe noinstr Hongyan Xia
2026-08-13  7:00   ` sashiko-bot
2026-08-13  6:50 ` [RFC PATCH v2 4/4] Revert "arm64: kprobes: Allow reentering kprobes while single-stepping" Hongyan Xia

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=cover.1786603168.git.hongyan.xia@transsion.com \
    --to=hongyan.xia@transsion.com \
    --cc=hupu@transsion.com \
    --cc=jiazi.li@transsion.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mhiramat@kernel.org \
    --cc=will@kernel.org \
    /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.