[Buildroot] [PATCH] package/busybox: disable sha1/sha256 hwaccel with x86 musl toolchains

Romain Naour romain.naour at smile.fr
Wed May 10 09:04:50 UTC 2023


Hi Yann, All,

Le 07/05/2023 à 15:03, Yann E. MORIN a écrit :
> Romain, All,
> 
> On 2023-05-03 00:04 +0200, Romain Naour spake thusly:
>> Buxybox's init segfault when built with x86 musl toolchain due to
>> recent changes about sha1 and sha156 hwaccel support in Busybox 1.36.0.
>>
>> From Alpinelinux [1]:
>> "main/busybox: disable sha hwaccel
>>  the flag check for this seems incorrect- it triggers sha_ni use when
>>  the instructions aren't available, but avx512vl/bw is - Elly on irc
>>
>>  causes failures in github actions, which have avx512 but no sha_no"
>>
>> The flag check should be fixed upstream by commit [2].
>>
>> But init still crash with the latest 1_36_stable (with backported patch)
>> and master branch...
>>
>> Disable sha hwaccel with x86 musl toolchains until the issue is fixed.
> 
> But why is it special to musl, if the issue if about hardware
> instructions not being available?

Sorry, I was running out of time to investigate further the issue.

> 
> And indeed, the OE patch you referenced also states "we see same on
> glibc systems too".

I was not able to reproduce with glibc.

> 
> The referenced thread in the busybox ML seem to hint at a musl dynamic
> linker issue, because ebx is clobbered. So there is no reason the issue
> can't happen with the other C libraries...

Ok.

> 
> Applied to master, thanks.

Note: the define is still named BUSYBOX_MUSL_DISABLE_SHA_HWACCEL after your
rework :)

Best regards,
Romain

> 
> Regards,
> Yann E. MORIN.
> 
>> Checked that qemu_x86_64_defconfig with musl for x86_64 for core2 boot
>> as expected with sha hwaccel enabled.
>>
>> The same workaround has been applied to openembedded-core [3].
>>
>> [1] https://git.alpinelinux.org/aports/commit/main/busybox?id=ae2cfdf6f6da3dc46ee09d8ceafa26921f6e058e
>> [2] https://git.busybox.net/busybox/commit/?id=bd76b75f72f717150b909e8c64edfda725cabe11
>> [3] https://github.com/openembedded/openembedded-core/commit/22f639d61127f4b82a79008c5305e44e090a3680
>>
>> Fixes:
>> https://gitlab.com/buildroot.org/toolchains-builder/-/jobs/4202276721
>>
>> Signed-off-by: Romain Naour <romain.naour at gmail.com>
>> ---
>>  package/busybox/busybox.mk | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
>> index 1633ca525d..eb70f12f86 100644
>> --- a/package/busybox/busybox.mk
>> +++ b/package/busybox/busybox.mk
>> @@ -276,6 +276,15 @@ define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES
>>  endef
>>  endif
>>  
>> +# Disable SHA1 and SHA256 HWACCEL with x86 musl toolchains
>> +# to avoid segfault with init.
>> +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386),y:y)
>> +define BUSYBOX_MUSL_DISABLE_SHA_HWACCEL
>> +	$(call KCONFIG_DISABLE_OPT,CONFIG_SHA1_HWACCEL)
>> +	$(call KCONFIG_DISABLE_OPT,CONFIG_SHA256_HWACCEL)
>> +endef
>> +endif
>> +
>>  # Only install our logging scripts if no other package does it.
>>  ifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),)
>>  define BUSYBOX_INSTALL_LOGGING_SCRIPT
>> @@ -364,6 +373,7 @@ endef
>>  BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS
>>  
>>  define BUSYBOX_KCONFIG_FIXUP_CMDS
>> +	$(BUSYBOX_MUSL_DISABLE_SHA_HWACCEL)
>>  	$(BUSYBOX_SET_MMU)
>>  	$(BUSYBOX_PREFER_STATIC)
>>  	$(BUSYBOX_SET_MDEV)
>> -- 
>> 2.34.3
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at buildroot.org
>> https://lists.buildroot.org/mailman/listinfo/buildroot
> 




More information about the buildroot mailing list