Re: Crash when attaching uretprobes to processes running in Docker
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date: 2025-01-17 01:23:12
Also in:
bpf, linux-api, lkml
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date: 2025-01-17 01:23:12
Also in:
bpf, linux-api, lkml
On Tue, 14 Jan 2025 15:21:29 +0100 Jiri Olsa [off-list ref] wrote:
On Tue, Jan 14, 2025 at 12:21:07PM +0100, Oleg Nesterov wrote:quoted
On 01/14, Masami Hiramatsu wrote:quoted
On Tue, 14 Jan 2025 10:22:20 +0100 Jiri Olsa [off-list ref] wrote:quoted
@@ -418,6 +439,9 @@ SYSCALL_DEFINE0(uretprobe) regs->r11 = regs->flags; regs->cx = regs->ip; + /* zero rbx to signal trampoline that uretprobe syscall was executed */ + regs->bx = 0;Can we just return -ENOSYS as like as other syscall instead of using rbx as a side channel? We can carefully check the return address is not -ERRNO when set up and reserve the -ENOSYS for this use case.Not sure I understand... But please not that the uretprobed function can return any value including -ENOSYS, and this is what sys_uretprobe() has to return.right, uretprobe syscall returns value of the uretprobed function, so we can't use any reserved value
We can make uretprobe (entry) fail if the return value is one of errno or NULL, because it *knows* what the return value here. Thank you,
jirka
-- Masami Hiramatsu (Google) [off-list ref]