On Tue, 14 Jan 2025 15:21:29 +0100 Jiri Olsa <olsajiri@xxxxxxxxx> wrote: > On Tue, Jan 14, 2025 at 12:21:07PM +0100, Oleg Nesterov wrote: > > On 01/14, Masami Hiramatsu wrote: > > > > > > On Tue, 14 Jan 2025 10:22:20 +0100 > > > Jiri Olsa <olsajiri@xxxxxxxxx> wrote: > > > > > > > @@ -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) <mhiramat@xxxxxxxxxx>