[PATCH v1 1/1] erofs-utils: fix endiannes issue
Alexander Egorenkov
egorenar at linux.ibm.com
Wed Apr 30 00:00:02 AEST 2025
Hi,
Gao Xiang <xiang at kernel.org> writes:
> Hi Alexander,
>
> On Tue, Apr 29, 2025 at 09:30:52AM +0200, Alexander Egorenkov wrote:
>> From: Super User <root at a8345034.lnxne.boe>
>
> Thanks for catching this, the "From:" line seems invalid, so
> I change it as "From: Alexander Egorenkov <egorenar at linux.ibm.com>"
>
Thanks!
Argh, sorry for the wrong From field.
>
> I guess it could break MacOS compilation, so I update as below:
>
> From d55344291092b69a2ba6f11dbcda52fa534ac124 Mon Sep 17 00:00:00 2001
> From: Alexander Egorenkov <egorenar at linux.ibm.com>
> Date: Tue, 29 Apr 2025 09:30:52 +0200
> Subject: [PATCH] erofs-utils: fix endiannes issue
>
> Macros __BYTE_ORDER, __LITTLE_ENDIAN and __BIG_ENDIAN are defined in
> user space header 'endian.h'. Not including this header results in
> the condition #if __BYTE_ORDER == __LITTLE_ENDIAN being always true,
> even on BE architectures (e.g. s390x). Due to this bug the compressor
> library was built for LE byte-order on BE arch s390x.
>
> Fixes: bc99c763e3fe ("erofs-utils: switch to effective unaligned access")
> Signed-off-by: Alexander Egorenkov <egorenar at linux.ibm.com>
> Reviewed-by: Ian Kent <raven at themaw.net>
> Reviewed-by: Hongbo Li <lihongbo22 at huawei.com>
> Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> ---
> configure.ac | 1 +
> include/erofs/defs.h | 15 +++++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index 6e1e7a1..88f1cbe 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -194,6 +194,7 @@ AC_ARG_WITH(selinux,
> AC_CHECK_HEADERS(m4_flatten([
> dirent.h
> execinfo.h
> + endian.h
> fcntl.h
> getopt.h
> inttypes.h
> diff --git a/include/erofs/defs.h b/include/erofs/defs.h
> index 051a270..21e0f09 100644
> --- a/include/erofs/defs.h
> +++ b/include/erofs/defs.h
> @@ -24,6 +24,21 @@ extern "C"
> #include <config.h>
> #endif
>
> +#ifdef HAVE_ENDIAN_H
> +#include <endian.h>
> +#else
> +/* Use GNU C predefined macros as a fallback */
> +#ifndef __BYTE_ORDER
> +#define __BYTE_ORDER __BYTE_ORDER__
> +#endif
> +#ifndef __LITTLE_ENDIAN
> +#define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
> +#endif
> +#ifndef __BIG_ENDIAN
> +#define __BIG_ENDIAN __ORDER_BIG_ENDIAN__
> +#endif
> +#endif
> +
> #ifdef HAVE_LINUX_TYPES_H
> #include <linux/types.h>
> #endif
> --
> 2.30.2
Thanks!
Regards
Alex
More information about the Linux-erofs
mailing list