hash: fix use after free in Toeplitz hash
authorVladimir Medvedkin <vladimir.medvedkin@intel.com>
Fri, 29 Oct 2021 14:54:59 +0000 (15:54 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 4 Nov 2021 10:43:20 +0000 (11:43 +0100)
This patch fixes use after free in thash library, reported by ASAN.

Bugzilla ID: 868
Fixes: 28ebff11c2dc ("hash: add predictable RSS")
Cc: stable@dpdk.org
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
lib/hash/rte_thash.c

index 6945a0a..394e132 100644 (file)
@@ -468,10 +468,10 @@ insert_before(struct rte_thash_ctx *ctx,
                        return ret;
                }
        } else if ((next_ent != NULL) && (end > next_ent->offset)) {
-               rte_free(ent);
                RTE_LOG(ERR, HASH,
                        "Can't add helper %s due to conflict with existing"
                        " helper %s\n", ent->name, next_ent->name);
+               rte_free(ent);
                return -ENOSPC;
        }
        attach_lfsr(ent, cur_ent->lfsr);
@@ -517,10 +517,10 @@ insert_after(struct rte_thash_ctx *ctx,
        int ret;
 
        if ((next_ent != NULL) && (end > next_ent->offset)) {
-               rte_free(ent);
                RTE_LOG(ERR, HASH,
                        "Can't add helper %s due to conflict with existing"
                        " helper %s\n", ent->name, next_ent->name);
+               rte_free(ent);
                return -EEXIST;
        }