From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by dpdk.org (Postfix) with ESMTP id A0E1D2C0E for ; Thu, 31 Mar 2016 09:35:16 +0200 (CEST) Received: by mail-wm0-f42.google.com with SMTP id 191so115734392wmq.0 for ; Thu, 31 Mar 2016 00:35:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=WIR1VMaf0lN/sM2uaGE6f3HyoXfo/+n+hVmKRLJ+9w0=; b=LDXDrwJjROsGNXYiwGIDzXXdQCAWLa2kR95OkSPAiC3zpoJz+pA8mla8BiZNSqgbp2 JRucW8CJZrq+2LeT/DkG5JnGHVhgQjy0Yl0vYkTn5CiyxlvkiIGeYsudVS2MuSbChSZ0 cw5uWEnI5mmF6jkxgT+Ua00TQk823hYS/rKE42WBgPYLYdWOBnXAWrgRqkkEYS9+OlTU XRrA2vGDdWKDi32B0wtYh9/AOb3K7KJIaSIS2oZ9q/BWUaZNZU0n3ISz9UvSsMGNQPWN PIqh6RfIHGXyA1YWtIp4NgsqvIW+MotFdcbpjJRCJqWBYAIMptOs708FxtirUXjlcO2K NI8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=WIR1VMaf0lN/sM2uaGE6f3HyoXfo/+n+hVmKRLJ+9w0=; b=QmIdpB3s6kcfoM7idsuVqlYaq2kpzIiwWR91Kzyp0ouL+1672oimN5pZw+wMQNm5PR /R1q4GM+P4U3nMzQjYyvlTODL2XkDULqjt4hZ055pLvgk/j0yTPxHLXs+8YcJPCPSNhj BdF1Mg5pg5nJSIMw9DOAp3CP7CzylUM2vtNQTS0nheE0DnSxY/W2doRiMaZUd90X8K2c Ug7CKZqIW6X/3FOkpPXHOlIm4K8cnz+Tl5yVRESI21hrZelOPT9ivhGGh4meajlFMH8D dykvKG78TpXMCZyaaLR0sD1SVPre6kLsb+qcbnWzDl9AbjoKH7N5L81Jy4W726AVy5aT E8MA== X-Gm-Message-State: AD7BkJLXRmaJylFHYKdDzyq/kJX/GFThrySekEwjnxKHHr5BTr6Fnh7CL31wJFNZy8dZJeGS X-Received: by 10.194.93.42 with SMTP id cr10mr13882551wjb.33.1459409716524; Thu, 31 Mar 2016 00:35:16 -0700 (PDT) Received: from [192.168.0.10] (was59-1-82-226-113-214.fbx.proxad.net. [82.226.113.214]) by smtp.gmail.com with ESMTPSA id y62sm8082220wmg.12.2016.03.31.00.35.15 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 31 Mar 2016 00:35:15 -0700 (PDT) To: dev@dpdk.org References: <1458044745-32764-1-git-send-email-olivier.matz@6wind.com> <1459351827-3346-1-git-send-email-olivier.matz@6wind.com> Cc: bruce.richardson@intel.com From: Olivier Matz X-Enigmail-Draft-Status: N1110 Message-ID: <56FCD332.8000604@6wind.com> Date: Thu, 31 Mar 2016 09:35:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.6.0 MIME-Version: 1.0 In-Reply-To: <1459351827-3346-1-git-send-email-olivier.matz@6wind.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 0/4] fix lpm and hash creation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Mar 2016 07:35:16 -0000 On 03/30/2016 05:30 PM, Olivier Matz wrote: > Seen while trying to fix the func_reentrancy autotest. The > series addresses several issues: > > 1/ Hash and lpm return a pointer to an existing object if the user requests the > creation with an already existing name. This look dangerous: when an object > is returned, the user does not know if it should be freed or not. > > 2/ There is a race condition in cuckoo_hash as the lock is not held in > rte_hash_create(). We could find some cases where NULL is returned when the > object already exists (ex: when rte_ring_create() fails). > > 3/ There is a race condition func_reentrancy that can fail even if the tested > API behaves correctly. > > > Changes since RFC: > > - split the patch in 4 patches > - on error, set rte_errno to EEXIST when relevant > - fix locking in cuckoo_hash creation > > Olivier Matz (4): > lpm: allocation of an existing object should fail > hash: allocation of an existing object should fail > hash: keep the list locked at creation > autotest: fix func reentrancy > > app/test/test_func_reentrancy.c | 31 +++++++++++++++++++++---------- > app/test/test_lpm6.c | 2 +- > lib/librte_hash/rte_cuckoo_hash.c | 18 +++++++++++++----- > lib/librte_hash/rte_fbk_hash.c | 5 ++++- > lib/librte_lpm/rte_lpm.c | 10 ++++++++-- > lib/librte_lpm/rte_lpm6.c | 5 ++++- > 6 files changed, 51 insertions(+), 20 deletions(-) > Self-nack, there is a typo in rte_cuckoo_hash.c breaking the compilation.