Re: [PATCH] dm vdo: use kernel byteswapping routines instead of GCC ones

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 20, 2024 at 05:44:05PM -0400, Matthew Sakai wrote:
> From: Ken Raeburn <raeburn@xxxxxxxxxx>
> 
> Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> Signed-off-by: Ken Raeburn <raeburn@xxxxxxxxxx>
> Signed-off-by: Matthew Sakai <msakai@xxxxxxxxxx>

Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>

> ---
>  drivers/md/dm-vdo/murmurhash3.c | 18 ++++--------------
>  1 file changed, 4 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/md/dm-vdo/murmurhash3.c b/drivers/md/dm-vdo/murmurhash3.c
> index 00c9b9c05001..124026cb676a 100644
> --- a/drivers/md/dm-vdo/murmurhash3.c
> +++ b/drivers/md/dm-vdo/murmurhash3.c
> @@ -8,6 +8,8 @@
>  
>  #include "murmurhash3.h"
>  
> +#include <asm/byteorder.h>
> +
>  static inline u64 rotl64(u64 x, s8 r)
>  {
>  	return (x << r) | (x >> (64 - r));
> @@ -16,24 +18,12 @@ static inline u64 rotl64(u64 x, s8 r)
>  #define ROTL64(x, y) rotl64(x, y)
>  static __always_inline u64 getblock64(const u64 *p, int i)
>  {
> -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> -	return p[i];
> -#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
> -	return __builtin_bswap64(p[i]);
> -#else
> -#error "can't figure out byte order"
> -#endif
> +	return le64_to_cpup(&p[i]);
>  }
>  
>  static __always_inline void putblock64(u64 *p, int i, u64 value)
>  {
> -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> -	p[i] = value;
> -#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
> -	p[i] = __builtin_bswap64(value);
> -#else
> -#error "can't figure out byte order"
> -#endif
> +	p[i] = cpu_to_le64(value);
>  }
>  
>  /* Finalization mix - force all bits of a hash block to avalanche */
> -- 
> 2.42.0
> 




[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux