From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751759AbdJWTq4 (ORCPT ); Mon, 23 Oct 2017 15:46:56 -0400 Received: from mout.web.de ([212.227.15.4]:62776 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751641AbdJWTqy (ORCPT ); Mon, 23 Oct 2017 15:46:54 -0400 To: etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Chris Wilson , Christian Gmeiner , David Airlie , Lucas Stach , Russell King From: SF Markus Elfring Subject: [PATCH] drm/etnaviv: Improve unlocking of a mutex in etnaviv_iommu_map_gem() Cc: LKML , kernel-janitors@vger.kernel.org Message-ID: <5a6c753f-d822-fb9e-0ea4-054754bdf4cc@users.sourceforge.net> Date: Mon, 23 Oct 2017 21:46:40 +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:L9R6qgQeGtZjYDmi/oSRO46svRiPVcEHzwKJGWSU4TuXxHpwzmi RIlAEJADqJQ/T1jnG6OjuvIMma8kTGJ1aI/3jT7r2IV9h9WqAuawGuc+3eApRgkxGsZEPAS afWCDejoEpuGa1U4qFNtWGgAu/0uIBZz9M2T8zdD+kDAGL8zATHqTpJH28wjbVgwxEWHDTE iZLLV9uQBz4HBLLCj/+Iw== X-UI-Out-Filterresults: notjunk:1;V01:K0:4zDuMjytHG0=:cBX5exEB432q3f4Pa5OEpL gHCvwuruJ5G/kwEsKD9bM0P9a4JnUviFkG6mHaI1iw495tN1/okLpgcgCW4PAWDzpJ98S8Zno T92VWeF7YeAQtLxaey0ybohOIpNuRPg8Jtq0jT/WbqNGRpx2ZFdqeaIsTY1/ivVFIB4xcFa8B UX3865Aoxafw5KHVjECCwx1flwJfRp1sBQ9N+TmUQumju+thyNjkaA5WB0W/F1yQl4h+wOMCr pl4MI0q0GN6zhUkLHFzY2d2TpZdH1XYh1M5LPXoGBoUfz2HvQ4cD0pWvOY2oIhaNVrCRrE8Z8 DmlpbJlCSzgV6XPA4Pzdp75mBpifQ1qlBN4p+UH27v8rxxgRc974Ehf72SrBlg1wKFpTEqYMB g843rvbcs8+EMd0bk5/nBkkk6e23jb59HgzpnauFzXTxW4UuTj/JcvBCPvfEYeAVdRcaeXoyp Obj1y8zAfrw4ad/xfnub8EZeWjoCx11Z6av/ObIaxrz9UA7dHEc40FMd4Koxk6JQ6c27+cYMI u8gp+/UYN8/g0A/HZvSw/tiGfKKsHIuvbcuzjRsLDsLc1Xn+xb9D6EBkfcdrOoF52LZeKhkB2 lDcpmC4CKzvr0hfY9ysZHuH5SIwq8QzSIXl8781BOyqkyyalY4B48GasGpbSA0WSbYG/6z80E 05NZ72iNUwig3ARGibrzGpMxcXod77zKmvMV9zeIAxw2wGOAWlUaQ7NcJsffq5jB9UR0VRxbH ztYEd/rhSP/dM9H9KvxRsrzj0VgtK73q9LTmeEPNgI7IfgMRZZ9XC6m8TzEr4L6EbOwm+N/YI 0oOf/0e7/1qE45OFWarTnhxMcJY+tfS6yOD5Uhnc9sIBnkn8RI= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Mon, 23 Oct 2017 21:27:30 +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 three calls by goto statements. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c index f103e787de94..9b0d797349d4 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c @@ -221,18 +221,16 @@ int etnaviv_iommu_map_gem(struct etnaviv_iommu *mmu, if (iova < 0x80000000 - sg_dma_len(sgt->sgl)) { mapping->iova = iova; list_add_tail(&mapping->mmu_node, &mmu->mappings); - mutex_unlock(&mmu->lock); - return 0; + ret = 0; + goto unlock; } } node = &mapping->vram_node; ret = etnaviv_iommu_find_iova(mmu, node, etnaviv_obj->base.size); - if (ret < 0) { - mutex_unlock(&mmu->lock); - return ret; - } + if (ret < 0) + goto unlock; mmu->last_iova = node->start + etnaviv_obj->base.size; mapping->iova = node->start; @@ -242,13 +240,12 @@ int etnaviv_iommu_map_gem(struct etnaviv_iommu *mmu, if (ret < 0) { drm_mm_remove_node(node); - mutex_unlock(&mmu->lock); - return ret; + goto unlock; } list_add_tail(&mapping->mmu_node, &mmu->mappings); mmu->need_flush = true; +unlock: mutex_unlock(&mmu->lock); - return ret; } -- 2.14.2