From patchwork Thu May 9 17:19:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dharmik Thakkar X-Patchwork-Id: 53358 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 13AD14CC7; Thu, 9 May 2019 19:20:02 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 1C6002862; Thu, 9 May 2019 19:19:57 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 824EB15BF; Thu, 9 May 2019 10:19:56 -0700 (PDT) Received: from dp6132.austin.arm.com (dp6132.austin.arm.com [10.118.12.38]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 137E13F6C4; Thu, 9 May 2019 10:19:56 -0700 (PDT) From: Dharmik Thakkar To: Yipeng Wang , Sameh Gobriel , Bruce Richardson , Pablo de Lara Cc: dev@dpdk.org, honnappa.nagarahalli@arm.com, zhongdahulinfan@163.com, Dharmik Thakkar , stable@dpdk.org Date: Thu, 9 May 2019 17:19:06 +0000 Message-Id: <20190509171907.14693-3-dharmik.thakkar@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190509171907.14693-1-dharmik.thakkar@arm.com> References: <20190509133924.7153-1-dharmik.thakkar@arm.com> <20190509171907.14693-1-dharmik.thakkar@arm.com> Subject: [dpdk-dev] [PATCH v4 2/3] hash: fix total entries in free key with position X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" In rte_hash, with current implementation, it is possible that keys are stored at indexes greater than the number of total entries. Currently, in rte_hash_free_key_with_position(), due to incorrect computation of total_entries, application cannot free keys with indexes greater than the number of total entries. This patch fixes this incorrect computation of total_entries. Bugzilla ID: 261 Fixes: 9d033dac7d7c ("hash: support no free on delete") Cc: honnappa.nagarahalli@arm.com Cc: stable@dpdk.org Reported-by: Linfan Suggested-by: Linfan Signed-off-by: Dharmik Thakkar Acked-by: Yipeng Wang --- lib/librte_hash/rte_cuckoo_hash.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c index 5029f9f61fae..ed2e96b6f178 100644 --- a/lib/librte_hash/rte_cuckoo_hash.c +++ b/lib/librte_hash/rte_cuckoo_hash.c @@ -1594,7 +1594,9 @@ rte_hash_free_key_with_position(const struct rte_hash *h, unsigned int lcore_id, n_slots; struct lcore_cache *cached_free_slots; - const uint32_t total_entries = h->num_buckets * RTE_HASH_BUCKET_ENTRIES; + const uint32_t total_entries = h->use_local_cache ? + h->entries + (RTE_MAX_LCORE - 1) * (LCORE_CACHE_SIZE - 1) + 1 + : h->entries + 1; /* Out of bounds */ if (key_idx >= total_entries)