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 9A012C3DA78 for ; Tue, 17 Jan 2023 20:58:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4CFF6B0073; Tue, 17 Jan 2023 15:58:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BD65A6B0074; Tue, 17 Jan 2023 15:58:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9E846B0075; Tue, 17 Jan 2023 15:58:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 996116B0073 for ; Tue, 17 Jan 2023 15:58:01 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 79FB214037E for ; Tue, 17 Jan 2023 20:58:01 +0000 (UTC) X-FDA: 80365503162.22.CEF1AE6 Received: from mail-yb1-f171.google.com (mail-yb1-f171.google.com [209.85.219.171]) by imf19.hostedemail.com (Postfix) with ESMTP id EE35D1A0007 for ; Tue, 17 Jan 2023 20:57:59 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=UJW1FUoX; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.219.171 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=1673989080; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=nNX5YwNB62Cr4mPdPksUy7ZFxJz80e5EP+vDe3CToes=; b=FVWxqQMJJvEuKAl9/E/NBmohr3R2bM2n9UtyG6g/7niOrukDQ6hCfNaCNgW8JONmQkaJZJ PlN4sLjwk4Pl/6/CLudL/Ror6rWcZJK7yQ/BHlVS2cQ4bGFUPn617YV83csMu+ZqPVOj98 gTe/t68KHd6OkewC211KvAXT6shXXgw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=UJW1FUoX; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.219.171 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673989080; a=rsa-sha256; cv=none; b=mXkCjHasGMyl37kgFw9nB/38jNhx09h2HM7n5b+IcnPgH4j/SpTkHaZKaDAOZ+cD11Lmiv njC2c6zp999hNiPyPvIXgAGuU68K+fNyNC2vxOEFXt3Fvy0BdmpJJ5XL3wAlOBx1Eq1RoO ARB50v0yte1H0y5E4rOn9Q0DnI4iGZE= Received: by mail-yb1-f171.google.com with SMTP id 188so35644205ybi.9 for ; Tue, 17 Jan 2023 12:57:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nNX5YwNB62Cr4mPdPksUy7ZFxJz80e5EP+vDe3CToes=; b=UJW1FUoXBMJDeWsaN1k6oDrmr67QWLZqnIBJQh4PRlEesBk3tMiIkorIvA8FJBfO3J 2yfftCQymRobA0fqZ3eS51nFr5UzM2Cq8hseu0uwO24QqY6pttuPkfNz3B0D2bM+8cQJ hrr8t4f0iV2D0N+JFF6eJ9UdDbJAw07cN0sEOCaUwAveqe9Qasg0WIQ4AQvZjbCNFRFf n7ADIVjMgqK9ddiVy7LpnVId2Ph4+X+JMGhSvCvPPeRbvgwz5zXyZeESZBnXaszCtyKP AM4f/andSFYwbNHDumyMa1HT7RMe/o5/qOtc+sxFbvcQj4VZud5TTfMFUGXr1wMMcRtQ Yriw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=nNX5YwNB62Cr4mPdPksUy7ZFxJz80e5EP+vDe3CToes=; b=LTWG5NPf/yo5WYHD9jtIJrhl/RgP3OGe5705WwEcK7/98fI72ovbOnloEq9uDY0KEx SRICzE3A8g+wNyW+rmAU4rEYTfDZU6IouFR3ik7Ff6nkor2CWGzwVtVOxbLC5zsnKZLu F/tLxPMoKg5sDFQTaZzED/yKz0mLQ45IFO6d3MRElFyjunTvZhmRPDKD9DudcJAlQBW7 fVdNDCAB+j1lPtU+gfYz7ysPbkcwA5KVpL7Gpod1FiZjKCsNnDLEEsTISAqeBv7kG2Lr 49DfMk2lxt1WCy+zl5uWsS9Xlm7+NkEY1MXjaGOJEzQYPIsAaLD47tKksfe8b5vAFyuP HNaw== X-Gm-Message-State: AFqh2kox8gGfrd8KwlFDJ45pNhmmDxQkZzb94B7FWnc55l4aIUrMiHQs hqeBkY09BtpZriODyc3U6HWJmOVjrPmc0qRtXM67Ow== X-Google-Smtp-Source: AMrXdXs706D7/Bu5iVfntQjoEJSNf8iye2tX48bplVHdlFbOfH7GJJD8B26WAHLzz8/nxZjbM/p4TlPO6wtoFHaiJ6w= X-Received: by 2002:a25:ceca:0:b0:7e4:115c:9cf6 with SMTP id x193-20020a25ceca000000b007e4115c9cf6mr586280ybe.316.1673989078773; Tue, 17 Jan 2023 12:57:58 -0800 (PST) MIME-Version: 1.0 References: <20230109205336.3665937-1-surenb@google.com> <20230109205336.3665937-33-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Tue, 17 Jan 2023 12:57:47 -0800 Message-ID: Subject: Re: [PATCH 32/41] mm: prevent userfaults to be handled under per-vma lock To: Jann Horn Cc: akpm@linux-foundation.org, michel@lespinasse.org, jglisse@google.com, mhocko@suse.com, vbabka@suse.cz, hannes@cmpxchg.org, mgorman@techsingularity.net, dave@stgolabs.net, willy@infradead.org, liam.howlett@oracle.com, peterz@infradead.org, ldufour@linux.ibm.com, laurent.dufour@fr.ibm.com, paulmck@kernel.org, luto@kernel.org, songliubraving@fb.com, peterx@redhat.com, david@redhat.com, dhowells@redhat.com, hughd@google.com, bigeasy@linutronix.de, kent.overstreet@linux.dev, punit.agrawal@bytedance.com, lstoakes@gmail.com, peterjung1337@gmail.com, rientjes@google.com, axelrasmussen@google.com, joelaf@google.com, minchan@google.com, shakeelb@google.com, tatashin@google.com, edumazet@google.com, gthelen@google.com, gurua@google.com, arjunroy@google.com, soheil@google.com, hughlynch@google.com, leewalsh@google.com, posk@google.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: EE35D1A0007 X-Stat-Signature: k5zgjpn6q59iw9ix1wk9mgeudffi49fo X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1673989079-51595 X-HE-Meta: U2FsdGVkX1+17h6e11EFsAyk4q8pzQLEgDB0yVVQx9tM6QSS5I0AL0WJwNJy4UlA7RSxl9HlwD15etBLTZj4zViwhSEFeqyTREdnYfQuEEhs/n8Qo3qlV/aAvfRvLtG45Ceg31KJSGHjDHMI9ej4qDLn1KyUVX/Nd9B3obySCf4ujbbt/hIFh4Y2SnK7pr37W2Jqg2az0fMzDUuHB/8zMqfspMKmKWhaQ3na+/HBhKBJvMLZRIs5dOKsivgAPRsC5pyUNJEDUsnuvhbsq3zo2o+QChJja+1QaQoe9mMkPbf6Yl1qnRPucZsb3yuButCGzYqyt/HoT7UAgwssoEALGKoi3w7rdAaHcNjSmQsr0Mq1jKZEmLvUQ9U5rlAp0YvYjBkyI3t/Bb3cn/S0HWDOKBe5GPq6HjyUlKNBIpuBBjcuqjip4ljQSaJE2A4a3OU+rTIevNI0MbHcJIyE3rweQflT8ecbfRd/72ZgFlgGkntD7bGoEMMcaeUFndchOxHb5k8E8gmf/DMdUgDO/oeZ7N9K8snwTlm8ZEwsQMbeCg+tkmOMQRLlFKX4HyiwEoIZbrjth3zppfyZ5zuMhgZziGWRR92CQqBYdO59t5hcnWGV6IMSMdhlh0cL5xtgodS2O8Gdutvvhv8lmnNxBamcbddj910RIx8X4r+bmQJCuizeZKyuzRo8pGRvEMJT/OJIaqsxxcKy8X/+up8MBI3bYlIg2SC/+K9Sz3+YspwLFbw5MKZdqmQfakv/KPV2DejQF4R+jxHRjwSdrv7J1dEFBFE6TQPBgNIkIAmUoJK0AaULZ09lhF/jcCB5KWNZ4SwGNtKMQaEwMJLG3pq7TxKS8ZGSybnbm9umOjJXnWTAyRDafyl/BpcZ3iW0zqwVM5y5W51eRjbfOe8czwo6zPkaguJ68i9XfIuBSJy/1IErRpXgeBST6cHEXpeyikyfekQmaoPV+6JAOf/lEbLFLBS tRJuDp60 txzknMiiC6+eTlPA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Jan 17, 2023 at 12:36 PM Jann Horn wrote: > > On Tue, Jan 17, 2023 at 8:51 PM Jann Horn wrote: > > On Mon, Jan 9, 2023 at 9:55 PM Suren Baghdasaryan wrote: > > > Due to the possibility of handle_userfault dropping mmap_lock, avoid fault > > > handling under VMA lock and retry holding mmap_lock. This can be handled > > > more gracefully in the future. > > > > > > Signed-off-by: Suren Baghdasaryan > > > Suggested-by: Peter Xu > > > --- > > > mm/memory.c | 7 +++++++ > > > 1 file changed, 7 insertions(+) > > > > > > diff --git a/mm/memory.c b/mm/memory.c > > > index 20806bc8b4eb..12508f4d845a 100644 > > > --- a/mm/memory.c > > > +++ b/mm/memory.c > > > @@ -5273,6 +5273,13 @@ struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, > > > if (!vma->anon_vma) > > > goto inval; > > > > > > + /* > > > + * Due to the possibility of userfault handler dropping mmap_lock, avoid > > > + * it for now and fall back to page fault handling under mmap_lock. > > > + */ > > > + if (userfaultfd_armed(vma)) > > > + goto inval; > > > > This looks racy wrt concurrent userfaultfd_register(). I think you'll > > want to do the userfaultfd_armed(vma) check _after_ locking the VMA, > > I still think this change is needed... Yes, I think you are right. I'll move the check after locking the VMA. Thanks! > > > and ensure that the userfaultfd code write-locks the VMA before > > changing the __VM_UFFD_FLAGS in vma->vm_flags. > > Ah, but now I see you already took care of this half of the issue with > the reset_vm_flags() change in > https://lore.kernel.org/linux-mm/20230109205336.3665937-16-surenb@google.com/ > . > > > > > if (!vma_read_trylock(vma)) > > > goto inval; > > > > > > -- > > > 2.39.0 > > >