From patchwork Fri Aug 18 20:21:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mstolarchuk X-Patchwork-Id: 27671 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 8DCC57CDF; Fri, 18 Aug 2017 22:21:18 +0200 (CEST) Received: from mail-pg0-f47.google.com (mail-pg0-f47.google.com [74.125.83.47]) by dpdk.org (Postfix) with ESMTP id 450BA7CCE for ; Fri, 18 Aug 2017 22:21:17 +0200 (CEST) Received: by mail-pg0-f47.google.com with SMTP id v189so70568358pgd.2 for ; Fri, 18 Aug 2017 13:21:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bigswitch-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=ODkyaa8pSSi/LWFvhbbMT1csN0PVmAh18FV4xBWwY14=; b=VU65LiyDKjeUgiz4IYDACVdjI1Ln9qrIYjbxpQaiKngXjHWhDUDyEWvaP9+UXAdb37 PbnKCOORbZzZTcRpZ34gIMNOdtoYvM5NQmJ6mtqKi5I+jvjCzb7nzURyqlPAk92txhqb GFt1bSnkUpiaqkHcjYdLhdZ1EVLDdc6nhp1r+yN8eNUYKEbWZVmXnl/1qnozOkGVBNQf 2C7xGHgZVZsILGnNHrwwtrpkHDlMBcK/Z9l19bXCjXexRvgpmtXdiUFxuGv4INr/pRis oyWcEQfC1ifeg0AECgU8pb9gVARHnKGFI+a7wBNLnWVTXiKnelh40mJYhNHDmVKaNDqC Cf5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ODkyaa8pSSi/LWFvhbbMT1csN0PVmAh18FV4xBWwY14=; b=ixES4QbqXZYtvCK96gdfuHLvcbHshbAWK419Wpi0SsleUun6HPhZyy8V3w1FlMGCg+ U/FLsAsl8GT+TVsMR84kVn32i/ky39Iz9ERjLjppacMN6GWcbk6kkNptUztmBLqWLBcO fI2Hr7EMhxlC6LABrytN/Nxh0XKR25Z3jNno4Hsi0wQ4+iPSZjxciZ/RSWZciWiRanRu cnEWzjtGwLqHf+0kHIZ24gULtvbKlDOEvWSsrxsDilI3VumL4/d/8rxR3H+Sg9Pj0aYN 3DZY7PByOrQ989E1iMNjR3nQpXCkQghE2D7KVDa2LSp6WDTX93xBKtrV+pJrQCafEtyn fmxA== X-Gm-Message-State: AHYfb5hfVaJSI74m82pbj93lA4KBMquBOyBwJssXGVEhlhgbwH3zVfxT 2KEW2lqcvL1Wng9n X-Received: by 10.84.225.1 with SMTP id t1mr10446083plj.355.1503087676585; Fri, 18 Aug 2017 13:21:16 -0700 (PDT) Received: from dpdk-dell-430.sw.bigswitch.com ([173.227.38.50]) by smtp.gmail.com with ESMTPSA id p5sm11246551pgf.50.2017.08.18.13.21.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 18 Aug 2017 13:21:15 -0700 (PDT) From: mstolarchuk To: bruce.richardson@intel.com, pablo.de.lara.guarch@intel.com Cc: dev@dpdk.org Date: Fri, 18 Aug 2017 13:21:29 -0700 Message-Id: <1503087689-119324-1-git-send-email-mike.stolarchuk@bigswitch.com> X-Mailer: git-send-email 1.9.1 Subject: [dpdk-dev] [PATCH 5/6] rwlock not released when the key exists 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" Consisntly use a single exit path in the code, have the various return values set 'ret' then use the single exit path. Signed-off-by: mstolarchuk --- lib/librte_hash/rte_cuckoo_hash.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c index d1fbb0b..946252f 100644 --- a/lib/librte_hash/rte_cuckoo_hash.c +++ b/lib/librte_hash/rte_cuckoo_hash.c @@ -554,7 +554,7 @@ struct rte_hash * LCORE_CACHE_SIZE, NULL); if (n_slots == 0) { ret = -ENOSPC; - goto failure; + goto finished; } cached_free_slots->len += n_slots; @@ -566,7 +566,7 @@ struct rte_hash * } else { if (rte_ring_sc_dequeue(h->free_slots, &slot_id) != 0) { ret = -ENOSPC; - goto failure; + goto finished; } } @@ -588,7 +588,8 @@ struct rte_hash * * Return index where key is stored, * subtracting the first dummy index */ - return prim_bkt->key_idx[i] - 1; + ret = prim_bkt->key_idx[i] - 1; + goto finished; } } } @@ -607,7 +608,8 @@ struct rte_hash * * Return index where key is stored, * subtracting the first dummy index */ - return sec_bkt->key_idx[i] - 1; + ret = sec_bkt->key_idx[i] - 1; + goto finished; } } } @@ -649,9 +651,8 @@ struct rte_hash * } if (i != RTE_HASH_BUCKET_ENTRIES) { - if (h->add_key == ADD_KEY_MULTIWRITER) - rte_spinlock_unlock(h->multiwriter_lock); - return new_idx - 1; + ret = new_idx - 1; + goto finished; } /* Primary bucket full, need to make space for new entry @@ -665,9 +666,8 @@ struct rte_hash * prim_bkt->sig_current[ret] = sig; prim_bkt->sig_alt[ret] = alt_hash; prim_bkt->key_idx[ret] = new_idx; - if (h->add_key == ADD_KEY_MULTIWRITER) - rte_spinlock_unlock(h->multiwriter_lock); - return new_idx - 1; + ret = new_idx - 1; + goto finished; } #if defined(RTE_ARCH_X86) } @@ -675,7 +675,7 @@ struct rte_hash * /* Error in addition, store new slot back in the ring and return error */ enqueue_slot_back(h, cached_free_slots, (void *)((uintptr_t) new_idx)); -failure: +finished: if (h->add_key == ADD_KEY_MULTIWRITER) rte_spinlock_unlock(h->multiwriter_lock); return ret;