linux-s390.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: "Christian Borntraeger" <borntraeger@linux.ibm.com>,
	ojeda@kernel.org, "Vasily Gorbik" <gor@linux.ibm.com>,
	"Heiko Carstens" <hca@linux.ibm.com>,
	linux-s390@vger.kernel.org,
	"Alexander Gordeev" <agordeev@linux.ibm.com>
Subject: Re: [PATCH v5 15/24] arm64: vdso: Enable the vdsocheck tool
Date: Tue, 08 Sep 2026 07:08:13 +0000	[thread overview]
Message-ID: <20260908070814.573CC1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260908-vdso-absolute-reloc-v5-15-3a93791af1cf@linutronix.de>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] R_AARCH64_JUMP26 is missing from the list of allowed AArch64 vDSO relocations, which breaks the build when the compiler optimizes tail calls.
- [Low] The Rust vdsocheck tool unconditionally rejects all relocation sections in the linked DSO, removing the known workaround for harmless R_*_NONE relocations.
--

commit de060cbc8fa252ca9eccafa1af109831e25d164f
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>

arm64: vdso: Enable the vdsocheck tool

The vdsocheck tool validates the object files and final .so library.
It can detect if the compiler created relocations which are incompatible
with the vDSO which need to be worked around.

> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 11e733b6a3cf3..f0dd557b16032 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -256,6 +256,7 @@ config ARM64
>  	select TRACE_IRQFLAGS_NMI_SUPPORT
>  	select HAVE_SOFTIRQ_ON_OWN_STACK
>  	select USER_STACKTRACE_SUPPORT
> +	select VDSO_CHECK

[Severity: Low]
Does enabling this checker break builds on toolchains that emit unneeded
R_*_NONE dynamic relocations?

In the legacy shell script workaround in lib/vdso/Makefile.include,
grep -v _NONE was used to safely ignore harmless empty dynamic relocations
generated by some older GNU ld ports.

In the Rust vdsocheck tool, validate_linked_dso() now unconditionally
rejects any relocation section:

lib/vdso/check/vdsocheck.rs:validate_linked_dso() {
    for section in file.sections()? {
        ...
        match section {
            elf::Section::Rel(_) | elf::Section::Rela(_) => {
                return Err(ValidationError::UnexpectedSection(section))
            }
            _ => {}
        }
    }
}

Because it does not iterate the section entries to filter or ignore _NONE
relocations, will this unconditionally return UnexpectedSection and break
builds relying on the previous workaround?

>  	select VDSO_GETRANDOM
>  	select VMAP_STACK
>  	help

[ ... ]

> diff --git a/lib/vdso/check/vdsocheck.rs b/lib/vdso/check/vdsocheck.rs
> index fb88ef0be09d9..e45a1fbc6829c 100644
> --- a/lib/vdso/check/vdsocheck.rs
> +++ b/lib/vdso/check/vdsocheck.rs
> @@ -57,6 +57,18 @@ fn allowed_relocations_for_machine(machine: u16) -> Option<AllowedRelocations<'s
>              ..Default::default()
>          }
>          .into(),
> +        bindings::EM_AARCH64 => AllowedRelocations {
> +            in_object_file: &[
> +                bindings::R_AARCH64_PREL64,
> +                bindings::R_AARCH64_PREL32,
> +                bindings::R_AARCH64_PREL16,
> +                bindings::R_AARCH64_LD_PREL_LO19,
> +                bindings::R_AARCH64_ADR_PREL_LO21,
> +                bindings::R_AARCH64_CALL26,
> +            ],

[Severity: Low]
Will this break the build when the compiler applies tail-call optimizations?

If the compiler optimizes tail calls in a vDSO function, it emits a B
instruction which generates an R_AARCH64_JUMP26 relocation. Since
bindings::R_AARCH64_JUMP26 is omitted from this list of allowed relocations,
validate_object_file() will encounter it, fail the in_object_file.contains()
check, and return InvalidRelocation, aborting the build.

> +            ..Default::default()
> +        }
> +        .into(),
>          _ => None,
>      }
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260908-vdso-absolute-reloc-v5-0-3a93791af1cf@linutronix.de?part=15

  reply	other threads:[~2026-09-08  7:08 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-08  6:33 [PATCH v5 00/24] vdso: Reject absolute relocations during build Thomas Weißschuh
2026-09-08  6:33 ` [PATCH v5 01/24] elf, uapi: Add a header for relocation constants Thomas Weißschuh
2026-09-08  6:37   ` sashiko-bot
2026-09-08  9:00   ` Christophe Leroy (CS GROUP)
2026-09-10  6:31   ` Mukesh Kumar Chaurasiya
2026-09-08  6:33 ` [PATCH v5 02/24] x86/elf, um/x86/elf: Move relocation constants to UAPI Thomas Weißschuh
2026-09-08  6:46   ` sashiko-bot
2026-09-08 13:55   ` Borislav Petkov
2026-09-08 14:26     ` Thomas Weißschuh
2026-09-08 15:12       ` Borislav Petkov
2026-09-09  5:59         ` Thomas Weißschuh
2026-09-09 14:49           ` Borislav Petkov
2026-09-09 19:27             ` H. Peter Anvin
2026-09-09 19:47               ` Borislav Petkov
2026-09-10  8:33             ` Thomas Weißschuh
2026-09-08 14:32     ` Christophe Leroy (CS GROUP)
2026-09-08  6:33 ` [PATCH v5 03/24] ARM: elf: " Thomas Weißschuh
2026-09-08  6:39   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 04/24] arm64: " Thomas Weißschuh
2026-09-08  6:44   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 05/24] powerpc/elf: " Thomas Weißschuh
2026-09-08  6:43   ` sashiko-bot
2026-09-08  9:02   ` Christophe Leroy (CS GROUP)
2026-09-08 14:01   ` R Nageswara Sastry
2026-09-10  6:30   ` Mukesh Kumar Chaurasiya
2026-09-08  6:33 ` [PATCH v5 06/24] riscv: elf: " Thomas Weißschuh
2026-09-08  6:45   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 07/24] LoongArch: " Thomas Weißschuh
2026-09-08  6:44   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 08/24] s390/elf: " Thomas Weißschuh
2026-09-08  6:50   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 09/24] MIPS: ELF: " Thomas Weißschuh
2026-09-08  6:48   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 10/24] sparc: elf: " Thomas Weißschuh
2026-09-08  6:48   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 11/24] tools headers UAPI: Sync ELF headers with the kernel sources Thomas Weißschuh
2026-09-08  6:51   ` sashiko-bot
2026-09-08  8:56   ` Christophe Leroy (CS GROUP)
2026-09-08  9:37     ` Thomas Weißschuh
2026-09-08  9:09   ` Christophe Leroy (CS GROUP)
2026-09-08  6:33 ` [PATCH v5 12/24] vdso: Add the vdsocheck tool Thomas Weißschuh
2026-09-08  6:57   ` sashiko-bot
2026-09-08  7:19   ` Peter Zijlstra
2026-09-08  7:35     ` Thomas Weißschuh
2026-09-08  7:37       ` Peter Zijlstra
2026-09-09 19:31     ` H. Peter Anvin
2026-09-09 19:38       ` Miguel Ojeda
2026-09-10  6:52   ` Mukesh Kumar Chaurasiya
2026-09-08  6:33 ` [PATCH v5 13/24] x86/vdso: Enable " Thomas Weißschuh
2026-09-08  7:00   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 14/24] ARM: vdso: " Thomas Weißschuh
2026-09-08  7:01   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 15/24] arm64: " Thomas Weißschuh
2026-09-08  7:08   ` sashiko-bot [this message]
2026-09-08  6:33 ` [PATCH v5 16/24] powerpc/elf: Add 32-bit REL16 relocation definitions Thomas Weißschuh
2026-09-08  6:55   ` sashiko-bot
2026-09-08  9:21   ` Christophe Leroy (CS GROUP)
2026-09-08 14:01   ` R Nageswara Sastry
2026-09-08  6:33 ` [PATCH v5 17/24] powerpc/vdso: Enable the vdsocheck tool Thomas Weißschuh
2026-09-08  7:05   ` sashiko-bot
2026-09-08 14:02   ` R Nageswara Sastry
2026-09-08 14:41   ` Christophe Leroy (CS GROUP)
2026-09-09  6:09     ` Thomas Weißschuh
2026-09-08  6:33 ` [PATCH v5 18/24] riscv: vdso: " Thomas Weißschuh
2026-09-08  7:04   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 19/24] LoongArch: vDSO: " Thomas Weißschuh
2026-09-08  7:05   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 20/24] s390/vdso: " Thomas Weißschuh
2026-09-08  7:06   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 21/24] MIPS: ELF: Add more PC-relative relocation definitions Thomas Weißschuh
2026-09-08  7:05   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 22/24] MIPS: vdso: Enable the vdsocheck tool Thomas Weißschuh
2026-09-08  7:20   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 23/24] sparc: " Thomas Weißschuh
2026-09-08  7:27   ` sashiko-bot
2026-09-08  6:33 ` [PATCH v5 24/24] vDSO: Automatically enable VDSO_CHECK Thomas Weißschuh
2026-09-08  7:18   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260908070814.573CC1F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=linux-s390@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=thomas.weissschuh@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).