From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751387AbdJ1PTJ (ORCPT ); Sat, 28 Oct 2017 11:19:09 -0400 Received: from mout.web.de ([217.72.192.78]:55554 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751189AbdJ1PTH (ORCPT ); Sat, 28 Oct 2017 11:19:07 -0400 To: netdev@vger.kernel.org, oss-drivers@netronome.com, "David S. Miller" , Jakub Kicinski , Simon Horman Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Subject: [PATCH] nfp: Improve unlocking of a mutex in area_cache_get() Message-ID: Date: Sat, 28 Oct 2017 17:18:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:hCeBCL0D3iG9zhFHIEr/mG57iEXxvVvC66fpd1Ut4Fq13AcVpGf bjW6RNepmuOMVZMWZXmOSCP3FzDuQ+0AJIlbZWIVyc0Rer3fj9tmFWrxB8lQUnbah2xLd+M FSZeD+CQlbWN73djknVWs8rFpbjx6Uuj8C7D2nrAEeGlQKe3RDyBtK+WWbfhNk7wPsrHQ7g liVqmDFmb9QAzmPaZGXSQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:mDXMcfFeBs0=:iVr44byFwFIW3k7oQ1m8Nv HOkdy601UMUN8L1E+meLyyWMABktDLC4GkTDckcX0eRwqAhRCNYwbpC8rlVmY5o59m6kj1+lM DK+eztm3zSGjLO7fmJTpLkrn/25QOjnBScnVuCYQ/Zj5BbiMB0rXrLOdaOrTSmGLD3SubnZwz Pko8foyp1IfpPAhFlHLkNiCEZJcxcOF8GOH0VBn1RTw5esxu3lAHT1HO/h8F3nVhlhLBeL+2k 2B5kVWS0MEaEYaTMFrPNYEpywvtuHP/VrYCYxM1WVFTlGXi1kHUiw0wB+YsCKrdAjmYAgRS9D VV3ACtqeH3tlhkOXJ1O97np4kcFDXlNW7B8bMfqScnPMnuMKti9T+3f1LYDxi861L19iWM7jJ eVSRkVDY7dgLf5sGzYfFBe7qxqRHztnZ69mkK1HZ3NucK+PIrA70H1FAj4mjYz4zfIRPXOnmt ofzPRCROjt0vV4YdIkK4OzbzcO+xjIOTQ2CHoqoojs8f0FIPpQU0J3qw0/vLqJLbAuB5UeQ7t Tn15YwoRoFeO1AVYDfOGg7ejVifjQ1P26+QBKVofF5svDZRsdX7WEXm2z2UqDyBi6lPJhY2Me xTnWWNrtFMragaQltAuku0g12wdjhsJrHDYDjS6j5HlOEbFRjjLsWlZ1ELV5ii1znIlD6asP1 03FmXtFJffe2kgubAs8wEm++abp6pX1Qa1bwPgPmU474OqM6WkY3unPT3/ecau72DS+R3vNAh tqlbiSZJAKvfIRvJr+cdbzQ4w4F2Iiui/nz8xe/e7WTBH9SR0TpyAifVhC8Z8l0tdm++rDrWN apg6gxzcwclXxkxnl+vv1eXMbAT/NvLIh5miEv2NhybeHK1BH8= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sat, 28 Oct 2017 17:12:10 +0200 Add a jump target so that a call of the function "mutex_unlock" is stored only once at the end of this function implementation. Replace four calls by goto statements. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- .../ethernet/netronome/nfp/nfpcore/nfp_cppcore.c | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c index 04dd5758ecf5..e864793b7ca0 100644 --- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c +++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c @@ -822,10 +822,8 @@ area_cache_get(struct nfp_cpp *cpp, u32 id, mutex_lock(&cpp->area_cache_mutex); - if (list_empty(&cpp->area_cache_list)) { - mutex_unlock(&cpp->area_cache_mutex); - return NULL; - } + if (list_empty(&cpp->area_cache_list)) + goto unlock; addr += *offset; @@ -843,10 +841,8 @@ area_cache_get(struct nfp_cpp *cpp, u32 id, /* Can we fit in the cache entry? */ if (round_down(addr + length - 1, cache->size) != - round_down(addr, cache->size)) { - mutex_unlock(&cpp->area_cache_mutex); - return NULL; - } + round_down(addr, cache->size)) + goto unlock; /* If id != 0, we will need to release it */ if (cache->id) { @@ -863,23 +859,23 @@ area_cache_get(struct nfp_cpp *cpp, u32 id, if (cpp->op->area_init) { err = cpp->op->area_init(cache->area, id, cache->addr, cache->size); - if (err < 0) { - mutex_unlock(&cpp->area_cache_mutex); - return NULL; - } + if (err < 0) + goto unlock; } /* Attempt to acquire */ err = nfp_cpp_area_acquire(cache->area); - if (err < 0) { - mutex_unlock(&cpp->area_cache_mutex); - return NULL; - } + if (err < 0) + goto unlock; exit: /* Adjust offset */ *offset = addr - cache->addr; return cache; + +unlock: + mutex_unlock(&cpp->area_cache_mutex); + return NULL; } static void -- 2.14.3