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: sta...@dpdk.org

Signed-off-by: David Marchand <david.march...@redhat.com>
---
 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..6d4dbea6d7 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);
+       memcpy(&tmp, &ctx->hash_key[offset >> 3], sizeof(tmp));
+       val = rte_be_to_cpu_32(tmp);
        val >>= (TOEPLITZ_HASH_LEN - ((offset & (CHAR_BIT - 1)) +
                ctx->reta_sz_log));
 
-- 
2.49.0

Reply via email to