On Thu, Jul 09, 2026 at 02:37:05PM +0800, Jinjie Ruan wrote:
> On 6/30/2026 11:32 PM, Thomas Weißschuh wrote:
> > On Mon, Jun 29, 2026 at 09:06:16PM +0800, Jinjie Ruan wrote:
(..)

> >> diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
> >> index 592dd8668de4..5a0314a3c26e 100644
> >> --- a/arch/arm64/kernel/vdso.c
> >> +++ b/arch/arm64/kernel/vdso.c
> >> @@ -343,3 +343,19 @@ int arch_setup_additional_pages(struct linux_binprm 
> >> *bprm, int uses_interp)
> >>  
> >>    return ret;
> >>  }
> >> +
> >> +bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
> >> +{
> >> +  unsigned long sigtramp;
> >> +
> >> +#ifdef CONFIG_COMPAT
> >> +  if (is_compat_task()) {
> >> +          unsigned long sigpage = (unsigned 
> >> long)current->mm->context.sigpage;
> >> +
> >> +          return regs->pc >= sigpage && regs->pc < (sigpage + PAGE_SIZE);
> >> +  }
> >> +#endif
> >> +  sigtramp = (unsigned long)VDSO_SYMBOL(current->mm->context.vdso, 
> >> sigtramp);
> >> +
> >> +  return regs->pc == (sigtramp + 8);
> > 
> > Instead of hardcoding 'sigtramp + 8' you could add a new label to the 'svc 
> > #0'
> > instruction and use that with VDSO_SYMBOL().
> 
> It seems that the modification of __kernel_rt_sigreturn() is not recommended

For the changes to the object code of the function this is obvious and
well explained in the comments.

Such a label however would not change the object code of the function.
In fact it would not change any bit whatsoever in the final vDSO,
save for a new build ID.


Thomas

Reply via email to