>
> Caught by UBSan:
>
> ../lib/hash/rte_thash.c:421:8: runtime error: load of misaligned address
> 0x0001816c2da3 for type 'uint32_t' (aka 'unsigned int'),
> which requires 4 byte alignment
>
> Fixes: 28ebff11c2dc ("hash: add predictable RSS")
> Cc: [email protected]
>
> Signed-off-by: David Marchand <[email protected]>
> Acked-by: Bruce Richardson <[email protected]>
> Acked-by: Vladimir Medvedkin <[email protected]>
> ---
> Changes since v3:
> - replaced memcpy() with use of unaligned_uint32_t type,
>
> ---
> lib/hash/rte_thash.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/lib/hash/rte_thash.c b/lib/hash/rte_thash.c
> index 6c662bf14f..0f9ed20d0d 100644
> --- a/lib/hash/rte_thash.c
> +++ b/lib/hash/rte_thash.c
> @@ -415,10 +415,10 @@ generate_subkey(struct rte_thash_ctx *ctx, struct
> thash_lfsr *lfsr,
> static inline uint32_t
> get_subvalue(struct rte_thash_ctx *ctx, uint32_t offset)
> {
> - uint32_t *tmp, val;
> + uint32_t tmp, val;
>
> - tmp = (uint32_t *)(&ctx->hash_key[offset >> 3]);
> - val = rte_be_to_cpu_32(*tmp);
> + tmp = *(unaligned_uint32_t *)&ctx->hash_key[offset >> 3];
> + val = rte_be_to_cpu_32(tmp);
> val >>= (TOEPLITZ_HASH_LEN - ((offset & (CHAR_BIT - 1)) +
> ctx->reta_sz_log));
>
> --
Acked-by: Konstantin Ananyev <[email protected]>
> 2.50.0
>