Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1821281yba; Tue, 2 Apr 2019 17:02:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqzRLAAfAO91gV5+t5h1EXS3Vi1A5cq4yMy36x9bo709ot1/GIoBW41YUNJKxom43dCD4OUU X-Received: by 2002:a17:902:8606:: with SMTP id f6mr75819228plo.151.1554249759832; Tue, 02 Apr 2019 17:02:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554249759; cv=none; d=google.com; s=arc-20160816; b=BnYq4ovAVLXTI7C+WHUiF32l49SbKqz5DczdpXv3kvHIvk+HlIBLhkHK62XNINkLva 4BOuSBnCuGw9j9ZYlhjiG4JlEnZ2oNAxEU81BsQLLFqmD4LoZ4lsPcEqSNoAkSBXx48f cqw7cR0qbbfnGE/g//RFZ60MF7yLls3ZL3MrV3ek9UYN5Th08jcziEs8UJRdTaJt+4MF W/UM7aXjSqhOUN4LgjRPM+dRq8n1rbDunG7JRnyi+DCBuEaSgYDpCqe3KWyrHP+MsLvR tkpMIpddZiw2ghcWOO0UAx8lr04BkBqaoSEX4/4dlr4nleSpECDsh50G2pYKgokQZGwb qPHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=DAV8hZYjlHWVUW/ro2G5efrumxLnILCMzYubKdb6RAA=; b=C31cqj6sLMbyJUUYd68C7NlY8X1V4rTRGGxHXpkA04dfn0afFnxMZk2v5824x8WerS isW0V9iSPtQjvDTfGhQ/sCYeHCJlTD4N5+ClxJs+iUGSLGk1V/cX6uF7FbTOuKtWwkxv uVLFncov9SuxuH7I9SK8U5omGoA71NkJ4tP8bFbS4C4K9zZs3KJP9yoy6MGk2PquafAm iVCTn3OZoHCMgALJDVZzGmw04Cuk2Ycpyjar4Rt1itGQ/1hOLbktkNwh2tRx4SRHVpv7 PVsEp4qMwsxYUPQYffOGsx5BgjdDGSlWuZabhVRhD1IH72UYw2kt+wjR02jnvKM9CPDr /fBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=DYQqFz1E; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g21si12185377pgi.448.2019.04.02.17.02.23; Tue, 02 Apr 2019 17:02:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=DYQqFz1E; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726456AbfDCABs (ORCPT + 99 others); Tue, 2 Apr 2019 20:01:48 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:36612 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725842AbfDCABs (ORCPT ); Tue, 2 Apr 2019 20:01:48 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x32Kd3AR163985; Tue, 2 Apr 2019 20:44:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=corp-2018-07-02; bh=DAV8hZYjlHWVUW/ro2G5efrumxLnILCMzYubKdb6RAA=; b=DYQqFz1Es0eTsjHefSJinfHkZj9GG0R6x09s5f53oykcMd5iF0EII+BlUpn+1XKZyqpy ehpuKE1KPh8f8+SX199aDH/x+N+c4l1g9WFEU5iJKbb/WhMXAR/+JG3Jtrq7vyhLEzuS yj7xGVmGvwzZdzDFVKtrc2EK1k9cDlWim983X0ss0owuMARRJf/y4yPvXj/O2j6nRI8d 69y1hsXZe8f7O5frVrxqBnD9WhKwIdQB0yL8z2p5IwSrNFxRb/FBjMXEZfuExAqgXB8I NEDh13MtMZ+JfeVS5BTlZdVsZxd8eJpF+zupdafHyI8+jDyhML92kzB4j6V4IQwvewMS 9g== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 2rj0dnm0b9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Apr 2019 20:44:18 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x32KfI5b103059; Tue, 2 Apr 2019 20:42:18 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3020.oracle.com with ESMTP id 2rm9mhp3mp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Apr 2019 20:42:17 +0000 Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x32KgHK2029977; Tue, 2 Apr 2019 20:42:17 GMT Received: from localhost.localdomain (/73.60.114.248) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 02 Apr 2019 13:42:17 -0700 From: Daniel Jordan To: akpm@linux-foundation.org Cc: daniel.m.jordan@oracle.com, Alex Williamson , Christoph Lameter , Davidlohr Bueso , linux-mm@kvack.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] vfio/type1: drop mmap_sem now that locked_vm is atomic Date: Tue, 2 Apr 2019 16:41:54 -0400 Message-Id: <20190402204158.27582-3-daniel.m.jordan@oracle.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190402204158.27582-1-daniel.m.jordan@oracle.com> References: <20190402204158.27582-1-daniel.m.jordan@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9215 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904020138 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9215 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 lowpriorityscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904020138 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With locked_vm now an atomic, there is no need to take mmap_sem as writer. Delete and refactor accordingly. Signed-off-by: Daniel Jordan Cc: Alex Williamson Cc: Andrew Morton Cc: Christoph Lameter Cc: Davidlohr Bueso Cc: Cc: Cc: --- drivers/vfio/vfio_iommu_type1.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 5b2878697286..a227de6d9c4c 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -257,7 +257,8 @@ static int vfio_iova_put_vfio_pfn(struct vfio_dma *dma, struct vfio_pfn *vpfn) static int vfio_lock_acct(struct vfio_dma *dma, long npage, bool async) { struct mm_struct *mm; - int ret; + s64 locked_vm; + int ret = 0; if (!npage) return 0; @@ -266,25 +267,15 @@ static int vfio_lock_acct(struct vfio_dma *dma, long npage, bool async) if (!mm) return -ESRCH; /* process exited */ - ret = down_write_killable(&mm->mmap_sem); - if (!ret) { - if (npage > 0) { - if (!dma->lock_cap) { - s64 locked_vm = atomic64_read(&mm->locked_vm); - unsigned long limit; - - limit = task_rlimit(dma->task, - RLIMIT_MEMLOCK) >> PAGE_SHIFT; + locked_vm = atomic64_add_return(npage, &mm->locked_vm); - if (locked_vm + npage > limit) - ret = -ENOMEM; - } + if (npage > 0 && !dma->lock_cap) { + unsigned long limit = task_rlimit(dma->task, RLIMIT_MEMLOCK) >> + PAGE_SHIFT; + if (locked_vm > limit) { + atomic64_sub(npage, &mm->locked_vm); + ret = -ENOMEM; } - - if (!ret) - atomic64_add(npage, &mm->locked_vm); - - up_write(&mm->mmap_sem); } if (async) -- 2.21.0