From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: jpoimboe@kernel.org, jikos@kernel.org, mbenes@suse.cz,
pmladek@suse.com, joe.lawrence@redhat.com, rostedt@goodmis.org,
mathieu.desnoyers@efficios.com, kpsingh@kernel.org,
mattbobrowski@google.com, song@kernel.org, jolsa@kernel.org,
ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
martin.lau@linux.dev, eddyz87@gmail.com, memxor@gmail.com,
yonghong.song@linux.dev, live-patching@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org
Subject: Re: [RFC PATCH 0/4] trace, livepatch: Allow kprobe return overriding for livepatched functions
Date: Fri, 10 Apr 2026 13:38:44 +0900 [thread overview]
Message-ID: <20260410133844.56ab7964da7628d1c3482acb@kernel.org> (raw)
In-Reply-To: <20260402092607.96430-1-laoar.shao@gmail.com>
Hi Yafang,
On Thu, 2 Apr 2026 17:26:03 +0800
Yafang Shao <laoar.shao@gmail.com> wrote:
> Livepatching allows for rapid experimentation with new kernel features
> without interrupting production workloads. However, static livepatches lack
> the flexibility required to tune features based on task-specific attributes,
> such as cgroup membership, which is critical in multi-tenant k8s
> environments. Furthermore, hardcoding logic into a livepatch prevents
> dynamic adjustments based on the runtime environment.
>
> To address this, we propose a hybrid approach using BPF. Our production use
> case involves:
>
> 1. Deploying a Livepatch function to serve as a stable BPF hook.
>
> 2. Utilizing bpf_override_return() to dynamically modify the return value
> of that hook based on the current task's context.
First of all, I don't like this approach to test a new feature in the
kernel, because it sounds like allowing multiple different generations
of implementations to coexist simultaneously. The standard kernel code
is not designed to withstand such implementations.
For example, if you implement a well-designed framework in a specific
subsystem, like Schedext, which allows multiple implementations extended
with BPF to coexist, there's no problem (at least it's debatable).
But if it is for any function, it is dangerous feature. Bugs that occur
in kernels that use this functionality cannot be addressed here. They
need to be treated the same way as out-of-tree drivers or forked kernels.
I mean, add a tainted flag for this feature. And we don't care of it.
>
> A significant challenge arises when atomic-replace is enabled. In this
> mode, deploying a new livepatch changes the target function's address,
> forcing a re-attachment of the BPF program. This re-attachment latency is
> unacceptable in critical paths, such as those handling networking policies.
>
> To solve this, we introduce a hybrid livepatch mode that allows specific
> patches to remain non-replaceable, ensuring the function address remains
> stable and the BPF program stays attached.
Can you share your actual problem to be solved?
If the specific problem and the specific subsystem are clear,
I think there is room to discuss it with the subsystem maintainer.
>
> Furthermore, this mechanism provides a lower-maintenance alternative to
> out-of-tree BPF hooks. Given the complexities of upstreaming custom BPF
> hooks (e.g., [0], [1]), this hybrid mode allows for the maintenance of
> stable, minimal hook points via livepatching with significantly reduced
> maintenance burden.
Maintenance cost is the same. We need to add out-of-tree BPF hooks on
source code. Maybe deploying cost will be reduced.
Thank you,
>
> Link: https://lwn.net/Articles/1054030/ [0]
> Link: https://lwn.net/Articles/1043548/ [1]
>
> Yafang Shao (4):
> trace: Simplify kprobe overridable function check
> trace: Allow kprobes to override livepatched functions
> livepatch: Add "replaceable" attribute to klp_patch
> livepatch: Implement livepatch hybrid mode
>
> include/linux/livepatch.h | 2 ++
> kernel/livepatch/core.c | 50 +++++++++++++++++++++++++++++++
> kernel/trace/Kconfig | 14 +++++++++
> kernel/trace/bpf_trace.c | 14 ++++++---
> kernel/trace/trace_kprobe.c | 49 ++++++++++++------------------
> kernel/trace/trace_probe.h | 59 +++++++++++++++++++++++++++----------
> 6 files changed, 139 insertions(+), 49 deletions(-)
>
> --
> 2.47.3
>
--
Masami Hiramatsu (Google) <mhiramat@kernel.org>
prev parent reply other threads:[~2026-04-10 4:38 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-02 9:26 [RFC PATCH 0/4] trace, livepatch: Allow kprobe return overriding for livepatched functions Yafang Shao
2026-04-02 9:26 ` [RFC PATCH 1/4] trace: Simplify kprobe overridable function check Yafang Shao
2026-04-02 13:13 ` Masami Hiramatsu
2026-04-02 9:26 ` [RFC PATCH 2/4] trace: Allow kprobes to override livepatched functions Yafang Shao
2026-04-02 12:48 ` Menglong Dong
2026-04-02 13:20 ` Yafang Shao
2026-04-03 10:25 ` Menglong Dong
2026-04-03 11:30 ` Steven Rostedt
2026-04-03 13:30 ` Yafang Shao
2026-04-03 14:26 ` Alexei Starovoitov
2026-04-03 16:00 ` Yafang Shao
2026-04-03 13:26 ` Yafang Shao
2026-04-09 9:47 ` Miroslav Benes
2026-04-02 9:26 ` [RFC PATCH 3/4] livepatch: Add "replaceable" attribute to klp_patch Yafang Shao
2026-04-03 16:19 ` Song Liu
2026-04-03 20:55 ` Dylan Hatch
2026-04-03 21:35 ` Song Liu
2026-04-06 11:08 ` Yafang Shao
2026-04-06 18:11 ` Song Liu
2026-04-06 21:12 ` Joe Lawrence
2026-04-07 2:54 ` Song Liu
2026-04-07 3:16 ` Yafang Shao
2026-04-07 9:45 ` Yafang Shao
2026-04-07 15:08 ` Petr Mladek
2026-04-07 23:09 ` Song Liu
2026-04-08 11:10 ` Petr Mladek
2026-04-08 2:40 ` Yafang Shao
2026-04-08 11:43 ` Petr Mladek
2026-04-08 18:19 ` Song Liu
2026-04-09 7:36 ` Petr Mladek
2026-04-07 13:52 ` Petr Mladek
2026-04-02 9:26 ` [RFC PATCH 4/4] livepatch: Implement livepatch hybrid mode Yafang Shao
2026-04-03 16:06 ` [RFC PATCH 0/4] trace, livepatch: Allow kprobe return overriding for livepatched functions Song Liu
2026-04-06 10:55 ` Yafang Shao
2026-04-06 18:26 ` Song Liu
2026-04-07 2:21 ` Yafang Shao
2026-04-07 2:46 ` Song Liu
2026-04-07 3:13 ` Yafang Shao
2026-04-08 6:51 ` Song Liu
2026-04-09 10:08 ` Miroslav Benes
2026-04-06 5:36 ` Christoph Hellwig
2026-04-06 10:57 ` Yafang Shao
2026-04-10 4:38 ` 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=20260410133844.56ab7964da7628d1c3482acb@kernel.org \
--to=mhiramat@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=kpsingh@kernel.org \
--cc=laoar.shao@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=mathieu.desnoyers@efficios.com \
--cc=mattbobrowski@google.com \
--cc=mbenes@suse.cz \
--cc=memxor@gmail.com \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox