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 34F73C6FD1F for ; Wed, 22 Mar 2023 07:13:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EF0766B007B; Wed, 22 Mar 2023 03:13:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EA1026B007D; Wed, 22 Mar 2023 03:13:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D67A7900002; Wed, 22 Mar 2023 03:13:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C69586B007B for ; Wed, 22 Mar 2023 03:13:14 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 9F83F4035F for ; Wed, 22 Mar 2023 07:13:14 +0000 (UTC) X-FDA: 80595667908.23.9A0627C Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by imf30.hostedemail.com (Postfix) with ESMTP id C96E180015 for ; Wed, 22 Mar 2023 07:13:12 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GIm+f8mi; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679469192; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E3VXMKh/lkCWPY1Nds8D2UzOeCpT3iiYlHjzEEB942A=; b=i1U7qngR3IeqCt5DmwWEcbcT68dAJ3BCjHCIw/OVHCmg5ZkOzIaYA4/5vqHjMVqUlh0A4U LXheFCW8MuwMdKkN8zVqmjCCbzkCcBBVYeHoZb8ENQG4RgjdEh32OYPMAAB61BoPMJH2Y+ KoXTcajo7jzWbGbJ+8xtzh0297BApWw= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=GIm+f8mi; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679469192; a=rsa-sha256; cv=none; b=msBjpESljm7mpc+AtSjRSLgLiyRbtj2xNyoDEGGdjEfjyx2uj2z6e3Jc6kfHdhEkge15fj fTCgjWl4U/3Bw7OzK5Gpp7xmekAMrp4lwpIMIbUHEvOut88SC4b6+Mp2ZWrYFGq5dHvFQk fFyn2rfh25rrsA5Er9D0im0tZhd4T2A= Received: by mail-wr1-f52.google.com with SMTP id y14so15949663wrq.4 for ; Wed, 22 Mar 2023 00:13:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679469191; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E3VXMKh/lkCWPY1Nds8D2UzOeCpT3iiYlHjzEEB942A=; b=GIm+f8mi9fCweTMKzPk05Ys0YPYQIbGyytB0E1s9AR5+K+Ct2WQ0mJk9QUvfse58Ke rhDYYMkdWV8HmemOs3SeLkyrp47xRYkpI7kZsEjAWP/kSJOKRQzKaKBxOh1UDBKDMaKu zjGQK7NHAQBWGDjfYXWqpfXwkmjBviXhjAjKwvNKiJGl4aejpEQNXQ5bwWY6DA/ZP3Ou wxYsSTtHKka7IcCBslj7pMM6+tR6pn6YDide1uess0h+JuyvPLw8lPfszQmfF/EEJXaj Cf8qYi0yEKfpCGjyb7sSLMjDog7fekwpVzaFfbb1a1GsIotHP73gRECeCJlUtWgcv4T1 E9/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679469191; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E3VXMKh/lkCWPY1Nds8D2UzOeCpT3iiYlHjzEEB942A=; b=WslSm70U5RkQO5qQAZHYiZDgsehTF0x2xnbC/jrCVdHoPRGCrQXgBvnlAMEc1sXBQc 5mMeGlNUrChGitd5wt8nKDSpK//zLjwxwKMi/e1L23lzvGJRa5Lj0tv4n6hh1YXp6NTz YXAR29glUQMDy48tq9aPzrX1CemXLbxFNjwueJ4MUfclEP3W3ZLzMTLP4o+wnm4oQziq 4afXTG0oac5W+tnejoc7q/UJe2YQlmBi1/mywrdip37U4muNeLSSQzE/pRRLt84unutx /K1N/0iJMa5omuzI8w2UyacxHHvVHA0SIBRuZ/VU3e1c78AGl4HYDk8/9LjtOIesDfAV WXKA== X-Gm-Message-State: AO0yUKWGHi5eOtMHll5aQk3BnCWy1cdAnpVAZjTqDyiqGMJfBjAPU2o4 l07TBIB9q9hEozkUHHcjkVYTlkPkniw= X-Google-Smtp-Source: AK7set8l06vQUVZgYZZr43xezu2O1WbwUwuF5+5hPlxdDocLJ0+tvB7JHfxQq0H/QQBq80ZfOxmCcw== X-Received: by 2002:a05:6000:100f:b0:2d5:b6a9:772a with SMTP id a15-20020a056000100f00b002d5b6a9772amr4821063wrx.17.1679469190963; Wed, 22 Mar 2023 00:13:10 -0700 (PDT) Received: from lucifer.home (host86-146-209-214.range86-146.btcentralplus.com. [86.146.209.214]) by smtp.googlemail.com with ESMTPSA id u4-20020a5d4344000000b002c5526234d2sm13290279wrr.8.2023.03.22.00.13.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Mar 2023 00:13:10 -0700 (PDT) From: Lorenzo Stoakes To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton Cc: David Hildenbrand , Matthew Wilcox , Vlastimil Babka , "Liam R . Howlett" , maple-tree@lists.infradead.org, Vernon Yang , Lorenzo Stoakes Subject: [PATCH v3 2/4] mm/mmap/vma_merge: fold curr, next assignment logic Date: Wed, 22 Mar 2023 07:13:02 +0000 Message-Id: <36399b6cdc843eb7fe243488ea9b29464f699170.1679468982.git.lstoakes@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: C96E180015 X-Stat-Signature: ozcfce4ia9r1c5ewdmrgws8buc7zmh5d X-HE-Tag: 1679469192-172225 X-HE-Meta: U2FsdGVkX1/albxdysUuX8GLDaCWj1wSUG4JN4wVZgtFc1iyuqXkZmZ2Sv0TUPD4/WATIKxF4EHJVo8oRFNs47idRWMwRah8TSJORiKjaCoqND66l7uGuUdQzs2+6ZyRkJKKtiMdcA6/n0zQ7qqTDo+0f2ixmQZip8TqtNmG6aKLe/JY6ihFwbIv68MmrKnXBPKKWQ4ukHvNj9OvXEscAlmgNz3nFDeAhV6saWB8z8n9tZtSJhXJ059EietWDRYqp7Bjdoo/Prk4OOPVmtQRLpt4U5jk1jkKlN4sS0YPmTNDO9L1OpKefl5N2Ji5gCRa2DxxvYDarkn2tkIhKW0LFZa1nrsr144Nfye6gReC+IpcvdAUI4nbGHq2+1Uz7fKqr3bb9HsZMOrv2K5R7vrpJzh7WY5KeU2eUrSbN5eY/DLUQUN6+EpgTuViQ9fvCNOKA5lBZAou1jWkb43QprAaCdp6NVW6t+2amJgCVMGWIOo/k9K+uZHRt/TJHIIar+aayhQvEC8Oi9suti0HQDm4o3AG4eYVMW4vufUHGhcjK34yQ7vmCpCOFEpmEY3djGbj9jYUxAK2jboiJ70ToN4X222ceYNeYVyIIFUECOVtS3v6g6EGEGeyC+BU+JtAo0feaf9iWMgrCqW2zhYRtcCBHVZl+Nzi0ATj60aUdKxot20vtT7xPQTSu8GKSiouMi+LxOREl0J9T0WitDu9D5TliIGGwfBxPDhuNlBVGAe0SIkvl2N43lMULRfknDlU5Q3JFScsPgY2qP8tY3cxuaIZYZI0n7Zgt+s10BsPZ9EK3ljs9s0A9PrSN0YBJ04YTeK4CaGdt8hoqi1bDVLckNuZPV+KRhX6CzswxClmrxgLZC80JEBTf3J6OVudNU9Ss2osDmUxclO0fVbGLx533U2XlBaq7azcAousHg1qjhJFd0OebnVMooV7LUMS9W3W5PMgGkv+Ge6j7L3/fu/s7bH PyCHg4G/ wXxOASopyb/RInt40MHsf9PKbCLCCETsR/EonX1eCwPOWJijAchA5IxR3m1WMpa7KVgwXyVqlrARDxTuR+GCpaKw0BNH/CIKSvziEWhpmIbVxfffWR8fAcYF3Z1HGGTDWLBR//sLvXLr1RFU/8nS+vKvK/E9KjvoNwhG58S20jWrALIzJRsLdtcp/s2VSebhr49QTXQcTB1JSWI5aWzpwGDf/n4BBNUmU3XcXyYP26U8W8V27GcstyHJDklXDGi7yZr6V4SEobnmgyWqEz6/4Dyq77JS8tpPb5pjz786CbZDfbQra1F0ZtO7xFuaZ7y83P2DVc2TrheioSLBoNg80sqeigchfIDt7OOigm+flphRlFhVClKD05lVIFZGlW6S0m1LGP/WOOVQHh1DuIY2RKN7SMQIlZ2tBITcFjU/tqRH4LYbEFLG1qWxHfhssIaHjXP0OdZcEQYefOiA3d11drXRRIKTCMKbBpg2yWggsPrCw96zTTDwEufXLGrtn9Ho53yfp 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: Use find_vma_intersection() and vma_lookup() to both simplify the logic and to fold the end == next->vm_start condition into one block. This groups all of the simple range checks together and establishes the invariant that, if prev, curr or next are non-NULL then their positions are as expected. This has no functional impact. Signed-off-by: Lorenzo Stoakes --- mm/mmap.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index c9834364ac98..dbdbb92493b2 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -930,15 +930,14 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, if (vm_flags & VM_SPECIAL) return NULL; - curr = find_vma(mm, prev ? prev->vm_end : 0); - if (curr && curr->vm_end == end) /* cases 6, 7, 8 */ - next = find_vma(mm, curr->vm_end); - else - next = curr; + /* Does the input range span an existing VMA? (cases 5 - 8) */ + curr = find_vma_intersection(mm, prev ? prev->vm_end : 0, end); - /* In cases 1 - 4 there's no CCCC vma */ - if (curr && end <= curr->vm_start) - curr = NULL; + if (!curr || /* cases 1 - 4 */ + end == curr->vm_end) /* cases 6 - 8, adjacent VMA */ + next = vma_lookup(mm, end); + else + next = NULL; /* case 5 */ /* verify some invariant that must be enforced by the caller */ VM_WARN_ON(prev && addr <= prev->vm_start); @@ -959,11 +958,10 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, } } /* Can we merge the successor? */ - if (next && end == next->vm_start && - mpol_equal(policy, vma_policy(next)) && - can_vma_merge_before(next, vm_flags, - anon_vma, file, pgoff+pglen, - vm_userfaultfd_ctx, anon_name)) { + if (next && mpol_equal(policy, vma_policy(next)) && + can_vma_merge_before(next, vm_flags, + anon_vma, file, pgoff+pglen, + vm_userfaultfd_ctx, anon_name)) { merge_next = true; } -- 2.39.2