From patchwork Fri Dec 23 00:39:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zach O'Keefe X-Patchwork-Id: 13080470 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 177C5C4332F for ; Fri, 23 Dec 2022 00:40:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9CE45940007; Thu, 22 Dec 2022 19:40:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 97DE2900002; Thu, 22 Dec 2022 19:40:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 846C1940007; Thu, 22 Dec 2022 19:40:00 -0500 (EST) 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 75D5C900002 for ; Thu, 22 Dec 2022 19:40:00 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5EAE4AB335 for ; Fri, 23 Dec 2022 00:40:00 +0000 (UTC) X-FDA: 80271713760.29.12F3CBC Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf18.hostedemail.com (Postfix) with ESMTP id D28061C0008 for ; Fri, 23 Dec 2022 00:39:58 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=StmLm7sN; spf=pass (imf18.hostedemail.com: domain of 33fikYwcKCIY9yuoopoqyyqvo.mywvsx47-wwu5kmu.y1q@flex--zokeefe.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=33fikYwcKCIY9yuoopoqyyqvo.mywvsx47-wwu5kmu.y1q@flex--zokeefe.bounces.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=1671755998; 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: references:dkim-signature; bh=tjaxoX4whKpyuDpO1RZ2pD3QmL73lEtzpr4r/K4az50=; b=Cu1Pn572NP1Hih62UqLKrDGzPGdOOnlb2XYUiGs+3j7Cd98bDLN4rIRWqoOVWSgyGK0ib9 neMzm4Rfr33MAanInahyNb+Mr2qHjMmCjmF0WOZ3IVb8PUXbXp+s4yIkgNy84dEvYQkqjz XGCCieqshDQ5stY0bIS1bgBG5t1Zky8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=StmLm7sN; spf=pass (imf18.hostedemail.com: domain of 33fikYwcKCIY9yuoopoqyyqvo.mywvsx47-wwu5kmu.y1q@flex--zokeefe.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=33fikYwcKCIY9yuoopoqyyqvo.mywvsx47-wwu5kmu.y1q@flex--zokeefe.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671755998; a=rsa-sha256; cv=none; b=xaDDeFwrPt/ctELymBezDy4P5ADR5ImQ0YaBg/s6PdVg4cEGT68dmjKGGDeEWVl+BS0bAl XwqoPa68N8/ZvooSed7BHIf56eqsNZM7G5hNidS7W3BA/6b4JrwPNz4qTR+X8TfkcevFef e5CF0Ogr9s8CJ2OHxRdFnFMxF+OGo28= Received: by mail-pf1-f202.google.com with SMTP id k127-20020a628485000000b0058029fb70a3so1812240pfd.19 for ; Thu, 22 Dec 2022 16:39:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=tjaxoX4whKpyuDpO1RZ2pD3QmL73lEtzpr4r/K4az50=; b=StmLm7sN4Ol4fttttGe0SS/TzKFGJqAR5OnmN1+Jdstwb8slvrSIjJQ9e80uWXYF+A bcYtIfgbqAt9RunSuqlqK6n8LC5jYr7rqt9fGYY3pq1TTnWjWiyh5ROgOB7Xmjvrc2Fg ZQAeqTEJ5WWaA0yTFd2gmhwe/jxYNMgzJuMnEbij1he4kune+3wtRRTHxqJp4Pc34ndv +2sC3vc8mv+HtZeZhDZXMJav41xdZ3plQeghZ5qlYlYegwyhhPQZE7/k1OgV045aImls hmG11/8dZlNSRrhkLOnz4Ty3rkq+N701Va1pPg/tZAW/7+4Rh7aMBb2PmRCQY/sparwY 3G/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=tjaxoX4whKpyuDpO1RZ2pD3QmL73lEtzpr4r/K4az50=; b=kn4mLdCboPYfYDB0JnQrXrht11B2kRVyqnjdOTMuFpMLQ8OGR6RNsIqHRUChpdmKq4 C5JLsFkSvse4ZuxUq/lyZY0kZDLyX+hOxoIMZNt/l7S5QkC882uiXQbyNt7YJWOOn6xb EbnaLc7dyGLHZO9diFH3BCJ97LeIYwUMXHzadFdlsW0HnJ6HfsBBMTpUwerDyYFJdi2b JM7JqK8mh8ws/yZwaHgo1GVzrNhmKOlMdSJO5/mB9YL1eF6717NbVz4ydazcWw4xPaJE RKoNNYAcimiH/PrWXOpDGb/iivZKT6EcynUv5LBLsmaihoMEMUdfA8ni4QSKHG0ORKb9 L7Fw== X-Gm-Message-State: AFqh2kqZuXYfGhzTb0Vc+cTw4IB4CPj8yxcJiQJSYrDqmQ4gkruhvYwZ HfVmZrVV8CvJp6bmRy4+Q1ZQHH2u+PVCb9oP378K6YJN4FHq8UZ0zwC1wbm1RMk7lCoeRnPqGzo NQWmh2OAYCVmJv6S05UWqJ/AAgNcTRMn7OExa96RRUoY7Icma607dfQAKZ+E= X-Google-Smtp-Source: AMrXdXuwj4XcfLHkzAnl3s4EE/Cp3LEaM15Xf5mgFdaQIfZsp9EgF/8uPTUnfi3woLF7SeEh1dEhsIKYmfhv X-Received: from zokeefe3.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:1b6]) (user=zokeefe job=sendgmr) by 2002:a17:902:f392:b0:186:4f38:dd3f with SMTP id f18-20020a170902f39200b001864f38dd3fmr681816ple.172.1671755997559; Thu, 22 Dec 2022 16:39:57 -0800 (PST) Date: Thu, 22 Dec 2022 16:39:53 -0800 Mime-Version: 1.0 X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Message-ID: <20221223003953.2795313-1-zokeefe@google.com> Subject: [PATCH] mm/MADV_COLLAPSE: don't expand collapse when vm_end is past requested end From: "Zach O'Keefe" To: linux-mm@kvack.org Cc: Andrew Morton , Hugh Dickins , Yang Shi , "Zach O'Keefe" X-Rspamd-Queue-Id: D28061C0008 X-Stat-Signature: x3f1jjedr775gorg3ao5bkge3rk6nhp3 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1671755998-742249 X-HE-Meta: U2FsdGVkX1/yaaVx+I89SBuDyppTWQj2w8qLV0jxZH801TUfCKxQIFm1F8q90Xhmt9tYg2SuT1hxCq5rC57iXPPMO4v668nHp38vU2jtUg1ebj9n8WAYyeT6Qi3G6itEXg7ufA7RvleaAxVk/RyGMRui5x6JBeDVTLRpsFZ92TEJbVKzpFG0OlStz0aJ+43Z3W+SH4rre+WhkYzmN0SVkxMsr3ucI8G+AGWxo5RflwelPGkqZnnqq44hPa/Dbm5lTJBIuu2jBFXEyj/+zlMaXDKgNg9M7/pKrWKA11yASuqKTuAFH/0pPzYeppjxpNN60t7cXHQP0Nrf5GM1Lw1TRSRyK7HNWbkcpCbPg4Nralgu80ZkfAfMT35qSj7pOZ/2bxWHwby0BjOYQGJbiZv+Y3mWqSvmahBDWcOAMYroh9LHP+yCVIaZ3Y9Ybv3dyxdH/SVxtmIFxxuYexZdGPq5uyvZrkJtN33O6UXHfuNrfXly9MyVNrsrm+2HcbRC95f7oL44MV6M7Nw7WTJakgR4A/oG72zPCc93taN52RaRpV0UmJ18Q0zOj4bp1bMrpUtrqpe5hUijKddeBfkwFgp1UMZ4SZETX/yFWkpFqMixOQCxEy7/5ZPPisTYk3jcMHNw2YaBv+p8LOOf4Nciu5kI1I0K5+Vi7xI4iNvW3SHpJUNC9U+y0qMkJibdwR9EypO1GQH4hsGQYhBt7tyTNEPgnug/sCkiENyrOKD11A2ZvMwUVj/WEE/9FFI4ZtWMUV6s6q4kF6R1jEKbd+G9paj5a9sDAKJupR/2v0kWErIWyNe3kt6PUa+h1k0mRldU1VFGt+BmDkmBkw/NMdPmbxd4W+jOBG3X6Vm1bthp+R2ciD9YwZgIUMlrVnGxOailwy7W3LYhwRkDxQWBAaFzrmyC/ISRCCx5VFXtNlq4wT5C3FysObQDkG8pmodEC0s7qX4sh68UGxmK+0KE+OJpaQg +JCIIkcu fDJvj+lBBC8AKSRRzTLptuMW2bYvEelODR+z9JAxJxO7qC1uEqXzlNBk3+UuEuLIP1HpNqXwmcu6sXVjt/DU4MtGRCHKk2d9idR0oJc8BYWY+sxd2cBIcI3B/RkQXGIIjHASG2jhFwRMgxi3/Z6jXTjtGVEc/VBZ0hO/1hjf6ZvDhQzKjhjE5JED+127sP+4gsrJq8IbrksDBAsk5rBspgdKuIFEXtYTtoruImY9qGxGxSgGFEcB4PHBtqFmBrefEcvS91vz8cjCsQcK1SLlURNdpLgeo2iFwIFexbnkDiPGwO71AhGVib2zbyyT2ZIeT7oH9AEEkONZo14IUp1nyERbXWxZm5fHzUKPp0sEFRHKYMZN3NqmoHidZbq2sE/FeQBGTUGDLXZH9/Ir+nTlo/CV1eajVnjZ37J8Y 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: MADV_COLLAPSE acts on one hugepage-aligned/sized region at a time, until it has collapsed all eligible memory contained within the bounds supplied by the user. At the top of each hugepage iteration we (re)lock mmap_lock and (re)validate the VMA for eligibility and update variables that might have changed while mmap_lock was dropped. One thing that might occur, is that the VMA could be resized, and as such, we refetch vma->vm_end to make sure we don't collapse past the end of the VMA. However, it's possible that during this refetch that we expand the region acted on by MADV_COLLAPSE if vma->vm_end is greater than the end of the user-supplied range. Don't expand the acted-on region when refetching vma->vm_end. Fixes: 4d24de9425f7 ("mm: MADV_COLLAPSE: refetch vm_end after reacquiring mmap_lock") Reported-by: Hugh Dickins Signed-off-by: Zach O'Keefe Cc: Yang Shi --- mm/khugepaged.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 5cb401aa2b9d..b4d2ec0a94ed 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -2649,7 +2649,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, goto out_nolock; } - hend = vma->vm_end & HPAGE_PMD_MASK; + hend = min(hend, vma->vm_end & HPAGE_PMD_MASK); } mmap_assert_locked(mm); memset(cc->node_load, 0, sizeof(cc->node_load));