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 D6BDAC3DA4A for ; Fri, 9 Aug 2024 18:53:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6F74E6B008C; Fri, 9 Aug 2024 14:53:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A6E46B0092; Fri, 9 Aug 2024 14:53:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 56DA46B0095; Fri, 9 Aug 2024 14:53:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 342CA6B008C for ; Fri, 9 Aug 2024 14:53:33 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A1CB11212E5 for ; Fri, 9 Aug 2024 18:53:32 +0000 (UTC) X-FDA: 82433605464.20.11C5011 Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50]) by imf28.hostedemail.com (Postfix) with ESMTP id D8D6BC0018 for ; Fri, 9 Aug 2024 18:53:30 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=P+plAv8a; spf=pass (imf28.hostedemail.com: domain of pedro.falcato@gmail.com designates 209.85.217.50 as permitted sender) smtp.mailfrom=pedro.falcato@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723229558; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=BFd6Ev453/aDjLObVzNphCwMYt1CKpC7GnDFLP288fM=; b=nWLttN+MjfQjTSq3nDAu0HE2lPpw+FxBGQhmRc+4GiqMjma6eOBYxad+Bk7+eYYW7xzrEL oIWLyoHtk49WKNwEz5T3uZMQpSGA+gmnydRwU9+dHBi2x/3s1dWRWrk7EspXDTKcgOAVg/ ZoEnsLgVu6EM0oYhZyhgq+UwhmVxI40= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=P+plAv8a; spf=pass (imf28.hostedemail.com: domain of pedro.falcato@gmail.com designates 209.85.217.50 as permitted sender) smtp.mailfrom=pedro.falcato@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723229558; a=rsa-sha256; cv=none; b=SU4kw0yy0N4hoI+U6O+b57LqsyXMelVR05/hwEvunMUfx5RixjKj04naIJdmmLg5tnZNCd b2iDEblqOjn9P+E/0X1y2kXeMgk0zIW544tlqPynfSC6pRbSz8nHCHlcNKbg1nbEB5rV5t c2CSZVacBtVt1fs/QcDnN5LykaZBuHY= Received: by mail-vs1-f50.google.com with SMTP id ada2fe7eead31-4928989e272so925491137.2 for ; Fri, 09 Aug 2024 11:53:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723229610; x=1723834410; darn=kvack.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=BFd6Ev453/aDjLObVzNphCwMYt1CKpC7GnDFLP288fM=; b=P+plAv8auieXzO83gE3Nl6XwQT/nk8ztr3c1PXuWa9qpDz9Xnu1vW17QhaVv1Vj2Un SxPTuxBmPNHsIZZjDUHvPVwVa9hqh+pg7SMQyGXmfX0A3K1cQvEtyEdkH5EElk6KAXCL ZWtSUQY2TuMDBgu6pFVR7kqe9TQSjoOjuc+RB61Kj/mRvspRUaaEWm0ekWENs7JNhync 5qH9uyF69KBfMyRrs1tUJ1I5qSOaZo+ANStUj6E8NBcnUu0l/YUQGFu5q9ghpfg+zFz1 HlXLMNt+eLwnW/akxjbihfOTqeDTmMk7zjmt8z1ZfuIsjFQxjAkKgq6YhAbkm3YeD3rF xUgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723229610; x=1723834410; h=content-transfer-encoding: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=BFd6Ev453/aDjLObVzNphCwMYt1CKpC7GnDFLP288fM=; b=mwjpeyrlHAgHN9AVVhKfwEeNv+pvJOrfQkgYiiQVyrrFFx1+pPRek3A5K/LMAOSYXB xuWyyW3EdXkD4wDDnz31ojKsIdOtL22lYkx1OuUPppCKfQRDEjPpYxAyHhYfshvtpVP3 F6b2JdNQPywHGTSfBA3RVfuK/9EPppYgLv6iuzEJsNdjXFM3h/xfOQABMXGR+iucwraW +o3NnA6Pb2ivf2kBhKFaeftFuFAMDuQxpQSvZVaCNb2DuDAfOsmYgzSRasMAltjXJ1SK oybMM0SUTowVOAZ4EghtHlXW0/KWLC4tXK+zEIcU6uTL2xJCM+4NiOzjgfzNS2xit2ga 8UtA== X-Forwarded-Encrypted: i=1; AJvYcCWaW5eUBKfrs1+RrkCd+SDFqREPx4cVCeJHK0wExIUwEQGwxIf9FSFgfBrP5MXEw1GSxeZI5IRsQLxVatZHLb0Qiuk= X-Gm-Message-State: AOJu0YzCntnfuOLcX/GlL0HNTBOJMODg86p9/MJfv63jtgTVCIvNPiSB X7nw/xQ3B9zDZCk/9D//RCV0czKIk7qoX2zgQumAuCHIAkEXfkyEb/WkW4VocnQN46qykcpzWBt ukZ4WfwEFDOU4iJnAHRQKwvwnGkmRWGVu X-Google-Smtp-Source: AGHT+IHjO2laCrD83xGgSKk32SS9gnG4HIGJIclIXUNutnOZzhTtxjLuWCIlNr0AsBryPANi7e+skoBuCZ0o3f2w8Oo= X-Received: by 2002:a05:6102:dc9:b0:48f:df47:a4a8 with SMTP id ada2fe7eead31-495d8605e99mr2764146137.29.1723229609875; Fri, 09 Aug 2024 11:53:29 -0700 (PDT) MIME-Version: 1.0 References: <20240807211309.2729719-1-pedro.falcato@gmail.com> <20240807211309.2729719-3-pedro.falcato@gmail.com> <3hzwtm7jw25ng5gemkp42k5ypkfky25fxeevccnk2d6gcpft32@qwkwofgauqna> In-Reply-To: <3hzwtm7jw25ng5gemkp42k5ypkfky25fxeevccnk2d6gcpft32@qwkwofgauqna> From: Pedro Falcato Date: Fri, 9 Aug 2024 19:53:18 +0100 Message-ID: Subject: Re: [PATCH v2 2/6] mm/munmap: Replace can_modify_mm with can_modify_vma To: "Liam R. Howlett" , Pedro Falcato , Andrew Morton , Vlastimil Babka , Lorenzo Stoakes , linux-mm@kvack.org, linux-kernel@vger.kernel.org, oliver.sang@intel.com, torvalds@linux-foundation.org, jeffxu@google.com, Michael Ellerman Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 5ifj5womaw8crizt9tzcek977yze4ux5 X-Rspam-User: X-Rspamd-Queue-Id: D8D6BC0018 X-Rspamd-Server: rspam02 X-HE-Tag: 1723229610-819842 X-HE-Meta: U2FsdGVkX19RTPUnBCACf34ydVAEPis4hRpyneD5C144w8hrqyRBcjzQxWfPBgLvL+4xHdWELwx+FEIXBcWzwr0gjG98w4MypOQBDuVpkZkx46uRIGKxPKONoR3tXmPf9J4ngeHXVji4ywWI1a8VPijyv6Zdq/U3DC6mLz9v0u+eE3sSBOnZLidpoxXdpW83V8dJ+F5XRsqXJR7DkW8cucq0Ir7Oe7gJFONB+BDxHjgEZYX98CmbnOG/JSdLa+jKlj/Z6CEhFbZcfCXBbK8fXB1hs+ouKlwlJ3nT2SM0NmRvu/lzFNbpcP8qtLotdQgkDwv63q3rmdWfP+5LBTNQieKuuyfU6KdfO0jyjCps0ofKDupB7T1gqa384wEkkPZetrlEAnl2nd9VaisjFTJjs3T/mlrORbMkdyzQ2GVQb6hSjQhzkZwvzn5nbWP35E0wtJJOzG93Pxo0QIBJcph1/q3Ovd9JHgagjr8tbiQgRWTKlJB0S0PLjq1Oed4oZr3kBYACAHkENG5La0ULTJdrdjyaeh4zL8tkDaKx3RpeWvheLoA3xWaA0Jbe+0JH2k4K0Q/IWjm1xqKHErikNRFJaCjt3Kxshl2xyRmzpJTidwJ5PSrE5XbstjAwyBeR/5cTN8d0hG+pihya6KHXuD0UM1B+lRQWCL27ZlF3T+O71HYodLyG3ZGyiM0wnQOFSuP2kVU2SYaFcX4QnvNjrV+odR8S9aCEbEkwQe6scsyySSOKo1G5OdoTo+Kh4+iy7ZIhD4QZIEzZdkgFNYU7zJx7voUdXhE5d0xRC5cgpvm+blc08H2Nfsn2KjGcktAnKrH4TJ2vEkw5jcdLhVE/tjp7oNm/KaSdLlXlsOhcxSRq72WJq1TmK5OON42jN91aoalp+C6PDOQIQ3JJJYRhZkTfHKrjGhE15Bu/3y/zvpIpJCP2eU8QG6o6v+nRaaXs+9G4Y9THEtfAgmhULeaG/4c 7y84g+h+ Ssz4T7BekSJ6ZItbbUlqyYYq451Td8UXQEi/d1QRg3h0idK3apVMqJpB3yL9jOff89ihZwRbQhu+sgi0LixCVjPCippmMaN3tlffYQle0gDFnhRZrJG5YGm+5LhjzaYrpFXYYs4+nAYUD7b/1y+B9ZL58ouy5wz0kQtac9xu08w4ymE5MICIR/ZDh5li7HR+73UIGIWHEmwPxXUphR0dcsAAb+RsB8K0vrxOuCMK8IrIf+c97hC88fttFvkMdFImK/xlZQDJGuTB+YTZeI/9QYpUzMvK7cIs1txiwQ8zAFegExAeYkB+TAQcSw1Olhx9sAL4jTBdncSrlON/fP3Xk431n21yvTBg2C2zmh9h8XyJJO8wFdPM2eCQdzejdHh4fXS/doshgXu2R3eWgzQrP31HwC5o79njguaRSJzAfW9HAa/Yfbes+C7wa2rqAlAplVwFxmVR9cMrGFRoON15HRrLvND4pkfUmJaenv3TdO1e70F8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000008, 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 Fri, Aug 9, 2024 at 5:48=E2=80=AFPM Liam R. Howlett wrote: > > * Liam R. Howlett [240809 12:15]: > > * Pedro Falcato [240807 17:13]: > > > We were doing an extra mmap tree traversal just to check if the entir= e > > > range is modifiable. This can be done when we iterate through the VMA= s > > > instead. > > > > > > Signed-off-by: Pedro Falcato > > > --- > > > mm/mmap.c | 13 +------------ > > > mm/vma.c | 23 ++++++++++++----------- > > > 2 files changed, 13 insertions(+), 23 deletions(-) > > > > > > diff --git a/mm/mmap.c b/mm/mmap.c > > > index 4a9c2329b09..c1c7a7d00f5 100644 > > > --- a/mm/mmap.c > > > +++ b/mm/mmap.c > > > @@ -1740,18 +1740,7 @@ int do_vma_munmap(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, > > > unsigned long start, unsigned long end, struct list_head = *uf, > > > bool unlock) > > > { > > > - struct mm_struct *mm =3D vma->vm_mm; > > > - > > > - /* > > > - * Check if memory is sealed before arch_unmap. > > > - * Prevent unmapping a sealed VMA. > > > - * can_modify_mm assumes we have acquired the lock on MM. > > > - */ > > > - if (unlikely(!can_modify_mm(mm, start, end))) > > > - return -EPERM; > > > - > > > - arch_unmap(mm, start, end); > > > - return do_vmi_align_munmap(vmi, vma, mm, start, end, uf, unlock); > > > + return do_vmi_align_munmap(vmi, vma, vma->vm_mm, start, end, uf, = unlock); > > > } > > > > > > /* > > > diff --git a/mm/vma.c b/mm/vma.c > > > index bf0546fe6ea..7a121bcc907 100644 > > > --- a/mm/vma.c > > > +++ b/mm/vma.c > > > @@ -712,6 +712,12 @@ do_vmi_align_munmap(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, > > > if (end < vma->vm_end && mm->map_count >=3D sysctl_max_ma= p_count) > > > goto map_count_exceeded; > > > > > > + /* Don't bother splitting the VMA if we can't unmap it an= yway */ > > > + if (!can_modify_vma(vma)) { > > > + error =3D -EPERM; > > > + goto start_split_failed; > > > + } > > > + > > > > Would this check be better placed in __split_vma()? It could replace > > both this and the next chunk of code. > > not quite. Yeah, I was going to say that splitting a sealed VMA is okay (and we allow it on mlock and madvise). > > > > > > error =3D __split_vma(vmi, vma, start, 1); > > > if (error) > > > goto start_split_failed; > > > @@ -723,6 +729,11 @@ do_vmi_align_munmap(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, > > > */ > > > next =3D vma; > > > do { > > > + if (!can_modify_vma(vma)) { > > > + error =3D -EPERM; > > > + goto modify_vma_failed; > > > + } > > > + > > This chunk would need to be moved below the end check so that we catch > full vma unmaps. Why below the end check? I believe we can avoid the split? Is there something I'm missing? But I did find a bug, what I really seem to want is: + if (!can_modify_vma(next)) { instead of (vma). It's somewhat concerning how the mseal selftests didn't trip on this? --=20 Pedro