From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DA86C4345F for ; Mon, 15 Apr 2024 20:59:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA1206B0089; Mon, 15 Apr 2024 16:59:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A51676B0092; Mon, 15 Apr 2024 16:59:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9195C6B0093; Mon, 15 Apr 2024 16:59:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 72C426B0089 for ; Mon, 15 Apr 2024 16:59:50 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 052A9406BD for ; Mon, 15 Apr 2024 20:59:49 +0000 (UTC) X-FDA: 82012982940.26.9A473D1 Received: from mail-yb1-f176.google.com (mail-yb1-f176.google.com [209.85.219.176]) by imf16.hostedemail.com (Postfix) with ESMTP id D345918000C for ; Mon, 15 Apr 2024 20:59:47 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=i5xK82KW; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713214787; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r4GB1avw83q0Aays4QUPoGT78uxp7RcG5mpdIOPQh2M=; b=TQiYDkYZBnbiMDistvzlGdgvsMCwQ/zc7ucgYKmvxroA3J38zY6Bqx1DKMmrSPmDIzIeCc a7C3/G/TqyfJXeRz25F8s1bmO9jzm4NRp+WsXl0w7ii4n8tgHi/WONS/0cvbmLqns2EHAF BPA4aMHWdMRHj/aUHqMN2vbpVI3nGa0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713214787; a=rsa-sha256; cv=none; b=lxni3+7cSghIZTttCatesKcD0AgTOBIpwT/1B4id6M8sSjWM5gQ8FRpSLvEsvmS55i1jdI WqI0abP1FH1D9w/qEl46GZRPTe9yy0FUNby/o3A0PEEDxMlSnFXfoIQAsXkZEM9vYJb2Rq o+AE1H4VcJLxM2gSGzzK7dOyNCUfRfU= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=i5xK82KW; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yb1-f176.google.com with SMTP id 3f1490d57ef6-ddaad2aeab1so3093527276.3 for ; Mon, 15 Apr 2024 13:59:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713214787; x=1713819587; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=r4GB1avw83q0Aays4QUPoGT78uxp7RcG5mpdIOPQh2M=; b=i5xK82KWc585OWiEAyiEFXbPtLePsKepACLsMRY7nusN58FLuChFK7WZA8wX9GWVIi xA+D3l5V9/ANKpX9EByewR5VLhu6mLQchA10jhiG7/+FyeLCJlcGdekIrhrZ8jDV2qe0 uaBvG1fIuq7tS0/jJZ9mKly/MGxTGlk0mXusOT3C6g5gChWu2TD2XTeMXzEyMeVfWefc wKRZsSGFTw6EWBdh8h8SFoDmIzkO8aLizbQ5yQSObQkZRWJthdj41RmfEPe2BnXvRMhD Rp+lgFjGZUq3h9DBZH7vVIxnUR51qVh/0qUv4GbzRMVcX7m8+ZCGztHQhGp8BtYTpHnF YVWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713214787; x=1713819587; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r4GB1avw83q0Aays4QUPoGT78uxp7RcG5mpdIOPQh2M=; b=Hun0QHv7MhWXwyf2nTE/ZQGtFt0oENMVMmqEqkh+qpAL6pN8LHUP0w+m9vrGD1qowh F8mRPDCMd+XO7YOdAXfC3gR3tt0TVGYf3cV6W9efmNFpvAY2u5SCQwkCwn456wcsIipX iuOiG9QTdXNnBw/gFhLOMLcPVnchGz2Te5MTOGNv2S7/ifNGh1hxBo13o8OF7iHq+S96 CYtHlq/5PH9NVKT1UTerfjJ9nhhWTUYI3svR3R/uQSmd8tLvCZr10xpAfLxB2d3dh+1C F8cWct3JNUd7iKFS0jszZ3IlgZmEOHeIFiMeo2WrX4oK8F2MYAiPRhWhfxnpkq0FyQoq JFbw== X-Gm-Message-State: AOJu0YzilnvqtKl+bMoxG36JCe5s/ngYs5XgPPIoKydWdsXKp5kpfdRp uqcHkAEEmr7ErRn3xC+GgWVnV7Hs/o4T76Sh3ft0CkoH++1jHDs38HgmNyxJfiUP8JwJnDQmZ7k zM1+qPBRTy5BnJcnUrnYLqgnnxalNBjp8rvQAGBMy0BRcGG5JIw== X-Google-Smtp-Source: AGHT+IE7YwgbCEuMIU7Nmt/H8/By+wa/zz0NGANauuOmX2sfaOAx79dcuJZDuViDxC4VwUFLgIG7mgqFOSX5PZ28umU= X-Received: by 2002:a25:af4e:0:b0:dc7:4b43:db3f with SMTP id c14-20020a25af4e000000b00dc74b43db3fmr8808714ybj.21.1713214786685; Mon, 15 Apr 2024 13:59:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Suren Baghdasaryan Date: Mon, 15 Apr 2024 13:59:34 -0700 Message-ID: Subject: Re: [RFC] Trylock the mmap_lock in vmf_anon_prepare() To: Matthew Wilcox Cc: linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: dpuhfz51f7qeak368tjszidipsjsc4oi X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: D345918000C X-Rspam-User: X-HE-Tag: 1713214787-569023 X-HE-Meta: U2FsdGVkX1/1T6vavwehgESGlACKBTnKMXCfFpa1XtiG7EQuwHv1JatJ5SBOsqaFYQK+6ko1nWcBwWy66PFJb695GuUW+w8/BUM2WZKhfcdVhGpYigmpO8n8tNbHpIQI2ZrZGulRwS2Agido3cn9qRZE4GOp7u6NmOaJwnajVyWNABsV07QgDGotR0HCXzvVFGKmMISCKlr2iGwM9OocYZ8d2Ifizy/cwZp5gI1cUJuelF47z4OsI0w9BG2cPlmQ1WY4uPJwbtKVc+kEJ7EdYZPPLw7r76gJsygLXt/CQzDpEJEkAJ21K5J3W/kgV2W5C5rvAKbFYSL4etpdSqihF8aFSnl+mAvsPf852ag7i3b02I+PVlOnsm8QjNSo08kIJT41jnpwz4VwM2SrMDBWomfsouCuaAAA+VBY8YmlrTg01sZ4LThGV2T63KNBtWfRi4eQI6eleHx9mMeS5aIHFcjlTVs612PpttRQEOoJC53+aH2AQwE+7KqqT/P3fT5jUEl8WOWvbs/aaUmps9NQLKuRBRY4IEPrWBQveHeHOBZOs3EjnGuBxW6LlMx3836cGfua+I7iPtZppgjOvkwi9VyE5xPGrbsR67XXTSrpOr6nfdFT0/R/hFIHH8f7RXM2ihJPpohfwHmv4Od2FJWEy8icwxxuNhpBGxkkVVGE/kU6hmfx2ZppWo7kNOfFqRckDllAFQfkeyiZ9fAXtuVN69Qs37YbmsP1tzcCQPp3EqKhl0dkL+WLP7G1/Oy+Bu6cmIP/eFIuZTh2UR7ndPhVm5t4OCqQw/kVKfzBEaYk6BgOVxl+dPVdWdJ/yhRX9nhiKb+Zx7Xrh9WUi6rrXodg871FWNH305ptYRQwg00zuSiMuFvNRflllAYqmDDZfI9DISZnx28OGilZrCIXPBRIgoQxO5Z4/nvIzeC8Bpf6BxGSguX23bH1rI6Z+kc60+RquDKeFRTO/szC1/5u5bW kwaW5YYY 8FM+bM4zakFLkGTnydZuuFOXMCt1Tv8X7+HlwKJmjEK9gMAzKDixAw37uIVfscfKF2Sz5w2nx/oZoS3rWHESjm1AtcM9A6dgeNaUgfbDKSjcIvLks1S+T/8hkYl5r1E57VfgL0Hf7IdutTkx5Vos5QO8+Q1lqS35tgV/8XhQlV+61KVYqt6+XhMaRq9ZBA/Vy0d7hpmUhD3Q4nPJPnxlaJRp5EkFWt8lqrzRarOTDQFv0IiA5k780vXSld+UCsLFM0OQCPrTuldfrDS580WaARziygmKSg6NCBw52H5M9hbsMeOaz/ps6IDVJC32AvnGDgmVsDbE23mKrzv4xPtrTWyKJf7N7OKJLp5MP X-Bogosity: Ham, tests=bogofilter, spamicity=0.001667, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, Apr 15, 2024 at 11:18=E2=80=AFAM Matthew Wilcox wrote: > > On Mon, Apr 15, 2024 at 09:14:10AM -0700, Suren Baghdasaryan wrote: > > > if (vmf->flags & FAULT_FLAG_VMA_LOCK) { > > > - vma_end_read(vma); > > > - return VM_FAULT_RETRY; > > > + if (!mmap_read_trylock(vma->vm_mm)) { > > > + vma_end_read(vma); > > > + return VM_FAULT_RETRY; > > > + } > > > } > > > if (__anon_vma_prepare(vma)) > > > return VM_FAULT_OOM; > > > > You should drop mmap_lock when returning VM_FAULT_OOM as well. > > > > > + if (vmf->flags & FAULT_FLAG_VMA_LOCK) > > > + mmap_read_unlock(vma->vm_mm); > > > return 0; > > > } > > Thanks. Fixed and pushed to > git://git.infradead.org/users/willy/pagecache.git vma-lock That looks correct now. Reviewed-by: Suren Baghdasaryan > > +++ b/mm/memory.c > @@ -3224,16 +3224,21 @@ static inline vm_fault_t vmf_can_call_fault(const= struct vm_fault *vmf) > vm_fault_t vmf_anon_prepare(struct vm_fault *vmf) > { > struct vm_area_struct *vma =3D vmf->vma; > + vm_fault_t ret =3D 0; > > if (likely(vma->anon_vma)) > return 0; > if (vmf->flags & FAULT_FLAG_VMA_LOCK) { > - vma_end_read(vma); > - return VM_FAULT_RETRY; > + if (!mmap_read_trylock(vma->vm_mm)) { > + vma_end_read(vma); > + return VM_FAULT_RETRY; > + } > } > if (__anon_vma_prepare(vma)) > - return VM_FAULT_OOM; > - return 0; > + ret =3D VM_FAULT_OOM; > + if (vmf->flags & FAULT_FLAG_VMA_LOCK) > + mmap_read_unlock(vma->vm_mm); > + return ret; > } > > /* >