lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 17 Jun 2019 12:26:52 +0100
From:   Will Deacon <will.deacon@....com>
To:     Arnd Bergmann <arnd@...db.de>
Cc:     Catalin Marinas <catalin.marinas@....com>,
        Dave Martin <Dave.Martin@....com>,
        Ard Biesheuvel <ard.biesheuvel@...aro.org>,
        Alex Bennée <alex.bennee@...aro.org>,
        Peter Maydell <peter.maydell@...aro.org>,
        Alan Hayward <alan.hayward@....com>,
        Julien Grall <julien.grall@....com>,
        Marc Zyngier <marc.zyngier@....com>,
        Mark Rutland <mark.rutland@....com>,
        Andrew Murray <andrew.murray@....com>,
        linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] arm64/sve: fix genksyms generation

Hi Arnd,

On Mon, Jun 17, 2019 at 12:42:11PM +0200, Arnd Bergmann wrote:
> genksyms does not understand __uint128_t, so we get a build failure
> in the fpsimd module when it cannot export a symbol right:

The fpsimd code is builtin, so which module is actually failing? My
allmodconfig build succeeds, so I must be missing something.

> WARNING: EXPORT symbol "kernel_neon_begin" [vmlinux] version generation failed, symbol will not be versioned.
> /home/arnd/cross/x86_64/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld: arch/arm64/kernel/fpsimd.o: relocation R_AARCH64_ABS32 against `__crc_kernel_neon_begin' can not be used when making a shared object
> arch/arm64/kernel/fpsimd.o:(.data+0x0): dangerous relocation: unsupported relocation
> arch/arm64/kernel/fpsimd.o:(".discard.addressable"+0x0): dangerous relocation: unsupported relocation
> arch/arm64/kernel/fpsimd.o:(".discard.addressable"+0x8): dangerous relocation: unsupported relocation
> 
> We could teach genksyms about the type, but it's easier to just
> work around it by defining that type locally in a way that genksyms
> understands.
> 
> Fixes: 41040cf7c5f0 ("arm64/sve: Fix missing SVE/FPSIMD endianness conversions")

I can't see which part of that patch causes the problem, so I'm a bit wary
of the fix. We've been using __uint128_t for a while now, and I see there's
one in the x86 kvm code as well, so it would be nice to understand what's
happening here so that we can avoid running into it in future as well.

> Signed-off-by: Arnd Bergmann <arnd@...db.de>
> ---
>  arch/arm64/kernel/fpsimd.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
> index 07f238ef47ae..2aba07cccf50 100644
> --- a/arch/arm64/kernel/fpsimd.c
> +++ b/arch/arm64/kernel/fpsimd.c
> @@ -400,6 +400,9 @@ static int __init sve_sysctl_init(void) { return 0; }
>  #define ZREG(sve_state, vq, n) ((char *)(sve_state) +		\
>  	(SVE_SIG_ZREG_OFFSET(vq, n) - SVE_SIG_REGS_OFFSET))
>  
> +#ifdef __GENKSYMS__
> +typedef __u64 __uint128_t[2];
> +#endif

I suspect I need to figure out what genksyms is doing, but I'm nervous
about exposing this as an array type without understanding whether or
not that has consequences for its operation.

Will

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ