Thread (47 messages) 47 messages, 9 authors, 2025-01-17

Re: Crash when attaching uretprobes to processes running in Docker

From: Jiri Olsa <hidden>
Date: 2025-01-14 14:21:34
Also in: bpf, linux-api, lkml

On Tue, Jan 14, 2025 at 12:21:07PM +0100, Oleg Nesterov wrote:
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

jirka
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help