* [PATCH] riscv: kprobes: free insn slot in arch_remove_kprobe() to avoid memory leak [not found] <20260731100940.2330-1-yuanxiaofeng@eswincomputing.com> @ 2026-08-05 8:23 ` Xiaofeng Yuan 2026-10-13 2:36 ` [PATCH v2] " Xiaofeng Yuan 1 sibling, 0 replies; 3+ messages in thread From: Xiaofeng Yuan @ 2026-08-05 8:23 UTC (permalink / raw) To: linux-kernel; +Cc: yuanxiaofeng When a kprobe is removed, arch_remove_kprobe() does not free the instruction slot allocated by arch_prepare_kprobe(). This causes a memory leak every time a kprobe is unregistered. Other architectures such as arm64, x86, and powerpc all free the slot in their arch_remove_kprobe() implementations. Add the missing free_insn_slot() call for RISC-V. Signed-off-by: Xiaofeng Yuan <yuanxiaofeng@eswincomputing.com> --- arch/riscv/kernel/probes/kprobes.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/riscv/kernel/probes/kprobes.c b/arch/riscv/kernel/probes/kprobes.c index 9e2afabf94..a76eab2972 100644 --- a/arch/riscv/kernel/probes/kprobes.c +++ b/arch/riscv/kernel/probes/kprobes.c @@ -128,6 +128,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) void __kprobes arch_remove_kprobe(struct kprobe *p) { + if (p->ainsn.api.insn) { + free_insn_slot(p->ainsn.api.insn, 0); + p->ainsn.api.insn = NULL; + } } static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) -- 2.43.0 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2] riscv: kprobes: free insn slot in arch_remove_kprobe() to avoid memory leak [not found] <20260731100940.2330-1-yuanxiaofeng@eswincomputing.com> 2026-08-05 8:23 ` [PATCH] riscv: kprobes: free insn slot in arch_remove_kprobe() to avoid memory leak Xiaofeng Yuan @ 2026-10-13 2:36 ` Xiaofeng Yuan 2026-11-09 9:19 ` Xiaofeng Yuan 1 sibling, 1 reply; 3+ messages in thread From: Xiaofeng Yuan @ 2026-10-13 2:36 UTC (permalink / raw) To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti Cc: linux-riscv, linux-kernel, Xiaofeng Yuan When a kprobe is removed, arch_remove_kprobe() does not free the instruction slot allocated by arch_prepare_kprobe(). This causes a memory leak every time a kprobe is unregistered. Other architectures such as arm64, x86, and powerpc all free the slot in their arch_remove_kprobe() implementations. Add the missing free_insn_slot() call for RISC-V. Registered and unregistered a kprobe on kernel_clone in a loop inside a QEMU (RISC-V virt) guest: before the fix the number of kprobe_insn_page entries in /proc/kallsyms grew by one every 512 iterations (each insn-slot page holds 512 eight-byte slots), and after the fix it stays at 1. Signed-off-by: Xiaofeng Yuan <yuanxiaofeng@eswincomputing.com> --- Changes in v2: - Drop the stray blank line before the closing brace. - Extend the commit message with a reproduction/verification note. - Rebase onto linux-next 20261009. arch/riscv/kernel/probes/kprobes.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/riscv/kernel/probes/kprobes.c b/arch/riscv/kernel/probes/kprobes.c index 9e2afabf9..a76eab297 100644 --- a/arch/riscv/kernel/probes/kprobes.c +++ b/arch/riscv/kernel/probes/kprobes.c @@ -128,6 +128,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) void __kprobes arch_remove_kprobe(struct kprobe *p) { + if (p->ainsn.api.insn) { + free_insn_slot(p->ainsn.api.insn, 0); + p->ainsn.api.insn = NULL; + } } static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) -- 2.34.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] riscv: kprobes: free insn slot in arch_remove_kprobe() to avoid memory leak 2026-10-13 2:36 ` [PATCH v2] " Xiaofeng Yuan @ 2026-11-09 9:19 ` Xiaofeng Yuan 0 siblings, 0 replies; 3+ messages in thread From: Xiaofeng Yuan @ 2026-11-09 9:19 UTC (permalink / raw) To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti Cc: Masami Hiramatsu, Nam Cao, linux-riscv, linux-kernel Gentle ping. Is there anything I still need to address on this patch? Happy to rebase onto a current linux-next if that makes it easier to apply. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-09 9:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20260731100940.2330-1-yuanxiaofeng@eswincomputing.com>
2026-08-05 8:23 ` [PATCH] riscv: kprobes: free insn slot in arch_remove_kprobe() to avoid memory leak Xiaofeng Yuan
2026-10-13 2:36 ` [PATCH v2] " Xiaofeng Yuan
2026-11-09 9:19 ` Xiaofeng Yuan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®