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 B455FC3DA41 for ; Wed, 10 Jul 2024 16:15:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 35FBF6B0092; Wed, 10 Jul 2024 12:15:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2E8EB6B0093; Wed, 10 Jul 2024 12:15:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 163AC6B0095; Wed, 10 Jul 2024 12:15:57 -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 E8CF76B0092 for ; Wed, 10 Jul 2024 12:15:56 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 95D19140147 for ; Wed, 10 Jul 2024 16:15:56 +0000 (UTC) X-FDA: 82324344312.28.940DD97 Received: from mail-yw1-f173.google.com (mail-yw1-f173.google.com [209.85.128.173]) by imf04.hostedemail.com (Postfix) with ESMTP id AAC4D40029 for ; Wed, 10 Jul 2024 16:15:54 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=EUQKrstB; spf=pass (imf04.hostedemail.com: domain of surenb@google.com designates 209.85.128.173 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=1720628112; 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=h4xVThAQgk7n6R5xLRV2ywFddDRqebZaKIPSQDVaDtw=; b=OdEneFQCr0HkDy3lX8K3xhtcOywNvdc4koW7ISFld22q551dMBwcdAsnf8KXe9c56a6pr0 y3/IbcJojQ3fLV4NVIcdleoDvlPe3tv40kLCVCaLuVveDvJPEv2WjzxZmJW0yYB/WM+X+2 Z6Tmhg+LC/HdTB/jUzcE1ov7VKZeSNA= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=EUQKrstB; spf=pass (imf04.hostedemail.com: domain of surenb@google.com designates 209.85.128.173 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=1720628112; a=rsa-sha256; cv=none; b=xyyRS3Y/H4YN+17C467I6FDy1QYJhlYM9XgNGPXs9EhZpWnCGTnYgPpjNFlhoNk/c2pNvw 4augveqbmXrZrE18n2vgRlrRNE/VQTagy7NbzI5FY5hdVr/yQ4AWZAgL1hoITIAx9rE41X e8FApXnE4nQ+aQNoURGKHXq6nkjk1eE= Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-64f4fd64773so77808087b3.0 for ; Wed, 10 Jul 2024 09:15:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1720628154; x=1721232954; 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=h4xVThAQgk7n6R5xLRV2ywFddDRqebZaKIPSQDVaDtw=; b=EUQKrstBOzUWzFaEwfKN+qA2pHIfPkrPBY4sn+1Y3cYFAVkEoAxPwNdBltAc1z7sRU q1iO9EGTeqRCSSGt5GQAZu06aqSp4q/6VpfjSsW6dOucBl5TJIs3TF/C607o5epetCvC gwt9InFRgS5QqTsNEByfVWjcUvboWbKfB4wQBAQ9HbJ9v8KOyN2jxto/cBMEtZvGuynQ jZBgvCa2pOdiEPXpMRXWwZcteb9jdEszoyId/hX7H8O727dJQ+8gpTRCJT+DUZdV5/nL q3c3uWDRnfMTLVVfr76HSyMmb7+R4go7oSIcm+bRzdnCRyOMf7AZwnubBLPBC4qOQQgj u17w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720628154; x=1721232954; 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=h4xVThAQgk7n6R5xLRV2ywFddDRqebZaKIPSQDVaDtw=; b=vbeHb8hTqZ9qxnyhVhTBGu9hforoGhTg4sixI/RBS1qId96eM4qx/t9AJ7gQN7q6Tl shyBQWD/UadJPHYCIRaxAmRYTc3YlCh3l0O/Gkm9wYLVhc+nGRRX1k532nj41LVVF+/J 80Elh/qaKWv1JKDm83stb9iBTbWE2Iqs85t+aEpdyMhGpNwWaC46c0ttaYusQSIsuZ63 XJcMKqE150Zze5qfm8MlkUzmfhnRqsvdKwXXQk71aWFX5H/6CDsdz7Ik3hCJxAjK52SK /0bBgboG7uaG2DTfdGG10SddBiunLzRaOkrhR9Xvhv/MHS+xUItb7UVRO8VAJ9fwNS5w uFpg== X-Gm-Message-State: AOJu0Yxdrd0KvbtrZVFdtRCP2RMLdwyl8RNKcb5z3N4zt+2bOM/SbCHZ kE1x7HQYZbyC4i3Yv9tGyBXnAUKNHIYNIN7LgniCh299N0kRL5qkThyQXzgL7KXVvXrJDpKispj BDu0uwQmFZ19oplU5OEa18KSyQyYZM5D8Kkn8 X-Google-Smtp-Source: AGHT+IGCoqOolpEeqhQMOEIsEQnyWipG02ffK00hOOo8l2FHKvLvFsXzjXv1yEHKYMw/uXlDNKaotNWQ+7BvNWHYkRA= X-Received: by 2002:a81:69c3:0:b0:650:279f:8c67 with SMTP id 00721157ae682-658f0fb30f1mr69528697b3.46.1720628153459; Wed, 10 Jul 2024 09:15:53 -0700 (PDT) MIME-Version: 1.0 References: <20240704182718.2653918-1-Liam.Howlett@oracle.com> <20240704182718.2653918-9-Liam.Howlett@oracle.com> In-Reply-To: <20240704182718.2653918-9-Liam.Howlett@oracle.com> From: Suren Baghdasaryan Date: Wed, 10 Jul 2024 09:15:42 -0700 Message-ID: Subject: Re: [PATCH v3 08/16] mm/mmap: Inline munmap operation in mmap_region() To: "Liam R. Howlett" Cc: linux-mm@kvack.org, Andrew Morton , Vlastimil Babka , Lorenzo Stoakes , Matthew Wilcox , sidhartha.kumar@oracle.com, "Paul E . McKenney" , Bert Karwatzki , Jiri Olsa , linux-kernel@vger.kernel.org, Kees Cook Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: AAC4D40029 X-Stat-Signature: 5ffgp9nqnfp4uzw3gnibk1u8cqod3r1c X-Rspam-User: X-HE-Tag: 1720628154-55249 X-HE-Meta: U2FsdGVkX188zNAa6gRoxwlcVJc20ihjBsnhOA3DnO1zCZkXmd4UlhMrIk1zkkg9boaqGLyI51KS5/7O0qQnSA2S1DHzUhSraKxYNahI4HR81zlXO//W/QD16hDsaMoOcKoIAU54+ft9xNjGoUSzGtn30jcDKtqQEAc1p150ZE/PDOL6GwO2LGgG7LTQmQnBGMmsBB5ZNcUdxoIvN8ITJXDQBrcVYVZyUzRaAmxoMaKOJSyrm+Q7DKNOjYSu/YrxvAiUKRcAVrpdEDoFYPAS/avdasXkReaJpvanfbPH9H+/EKPxk7RjTjqpFs9pgY2TaqhJbcy4Az0ZFurFjceH6CVC2bM00/lgOM8LEFV86OXFR8SVqcIEvuyL36rnPNSw0+zfT+8Wk0CExZUTIy0WdqRlkpmyMPWpaUZ8zzwcTLBOv4KxgxGWygVe/+e/6KM6DYvi4V7b2VU+2aZG5ufDUqQsii4cq51aPGulwhpnZPrErhy9tl1KYMY/Y9dq3jy2f9eMq4PTRcHm8pX25gFVUodycX8ffrjFWdXIwwIZGwzD94JXcB1WE6XDbWGjj26HfsGt3GiljOEsNvYDQah5eMPYxUopBT+l2ojxCfz/LBLP4wo5KZ3vt1qyPofJgx+6oZp5xYI53B+cXgrddSOXgdTc6rC9qlILwb72ilvOG6Oo+fd4udppGspgqNWx2/XvJL+tB6/ANCiYfGvXSCcyYeXDOvRlM4FF2EXMda3q9gXJHEKY0cMu9mwYwfuAZll4tH06kGQUf35EBaw08/8W0qaM10t2VIQlrsIVplJl+ffQvwBvdKRDZe9yc4MwmX3FbWbvv2HO9SvGqRSvQ2pnAYndNY2s640tbqa16+SoKDayxCodh93cvBJqbT2fumMTA5D8gBjJV5dF6mgc89gXbjwh+m7v89ecJuHVtlK17XjGHvoUuDlgkvsMkhXzeM0lHF9dxalEuhbWv0m7FBe ZPqv1ive Uq3ezRv+bns+8LZ+QY47SWFc8hfxiJ9f493u4jv05PPyIAsq5VYz1sb35byIu46TkLoGw0CZW1Kxg0jSewhB2xPRd+eIImbdG15TfhSrH7ZJs4I15GwBUKmZPRyz7Lt5Ts+4YTJsrXS9KGn2/VoK+A9MXNy/f4N3gqbHPXR4IFf/qk6sOHFxBGTYE9kb5OJ7xXyptbcVyFCtPy2x0u5CfvWaCjcui3x0JpRP5I+vI5JQTF9CdflHpO7QfXFpfx2F2rO41LnOjUBQLN8G+njiXjCfFcg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 Thu, Jul 4, 2024 at 11:27=E2=80=AFAM Liam R. Howlett wrote: > > From: "Liam R. Howlett" > > mmap_region is already passed sanitized addr and len, so change the > call to do_vmi_munmap() to do_vmi_align_munmap() and inline the other > checks. Hmm. I think such refactoring when you want to skip some checks would be done a bit differently... You would introduce a __do_vmi_munmap() function which is called at the end of do_vmi_munmap() after the checks and then call __do_vmi_munmap() directly wherever you want to skip the checks. That would avoid code duplication. Any reason that can't be done here? > > Signed-off-by: Liam R. Howlett > --- > mm/mmap.c | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index 8d9be791997a..e9858ca8bbd4 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -2937,12 +2937,20 @@ unsigned long mmap_region(struct file *file, unsi= gned long addr, > return -ENOMEM; > } > > - /* Unmap any existing mapping in the area */ > - error =3D do_vmi_munmap(&vmi, mm, addr, len, uf, false); > - if (error =3D=3D -EPERM) > - return error; > - else if (error) > - return -ENOMEM; > + > + if (unlikely(!can_modify_mm(mm, addr, end))) > + return -EPERM; > + > + /* arch_unmap() might do unmaps itself. */ > + arch_unmap(mm, addr, end); > + > + /* Find the first overlapping VMA */ > + vma =3D vma_find(&vmi, end); > + if (vma) { > + if (do_vmi_align_munmap(&vmi, vma, mm, addr, end, uf, fal= se)) > + return -ENOMEM; > + vma =3D NULL; > + } > > /* > * Private writable mapping: check memory availability > -- > 2.43.0 >