From patchwork Wed Aug 30 18:27:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13370367 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 220F5C83F01 for ; Wed, 30 Aug 2023 18:28:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89AA744016F; Wed, 30 Aug 2023 14:28:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 84A92440161; Wed, 30 Aug 2023 14:28:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6ECB844016F; Wed, 30 Aug 2023 14:28:20 -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 5DA1D440161 for ; Wed, 30 Aug 2023 14:28:20 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3A5C4A036A for ; Wed, 30 Aug 2023 18:28:20 +0000 (UTC) X-FDA: 81181605960.18.EACD1A7 Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) by imf20.hostedemail.com (Postfix) with ESMTP id E9FD41C0009 for ; Wed, 30 Aug 2023 18:28:17 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=sent.com header.s=fm1 header.b=bp98RaEm; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=In+KJmv1; dmarc=pass (policy=none) header.from=sent.com; spf=pass (imf20.hostedemail.com: domain of zi.yan@sent.com designates 64.147.123.21 as permitted sender) smtp.mailfrom=zi.yan@sent.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693420098; h=from:from:sender:reply-to: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=B/34aYGd//k30w6FAZcn4rQLSn8omlUfm+JuIQdqDGI=; b=RswMgT5iwafL0eK1mC2xXVE8UNao9OOZQw5E3Y0SAkRcm6Yj+viP+Q5nROAGNGanKkCP5I 19DQZJ15qwQH9vFcD6HtIRfKuyGMNN+aWDo815SyACewzMDVKAnV8LpNuXEUgaW9Eys9mx dsWbamyUg+lNc35yZoOrJ2H2i8V3kgU= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=sent.com header.s=fm1 header.b=bp98RaEm; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=In+KJmv1; dmarc=pass (policy=none) header.from=sent.com; spf=pass (imf20.hostedemail.com: domain of zi.yan@sent.com designates 64.147.123.21 as permitted sender) smtp.mailfrom=zi.yan@sent.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693420098; a=rsa-sha256; cv=none; b=Ppzg4UQryG64K5RIumavFxjBluv1Ej6C57Qxei1JapCJu3dpUiHrq11DFozCqsh+QC4jYX ugVW7sGWf+fbHqaQLb07xJ3NhWJV7DwBEKlEqPetw5jiNj+sGj244/znF4XcQ9ZBhNxCuz 8gT0uoW32aeoN3hOBDLNkkTKsYwHHtQ= Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 46F693200946; Wed, 30 Aug 2023 14:28:15 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Wed, 30 Aug 2023 14:28:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sent.com; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:reply-to:sender:subject:subject:to:to; s=fm1; t= 1693420094; x=1693506494; bh=B/34aYGd//k30w6FAZcn4rQLSn8omlUfm+J uIQdqDGI=; b=bp98RaEmsAkKBW8ghMIXww+CS6+V/zkoC6Rhda0iWyOG6/7XJYc /8v4rROgB+oFQlulTvKrM8AkcGcy3GW2TRL/6qU9FKRX/EHKaTFwq11SJY0VY2FO 5C+nnb47gm2+n9BbEkTT6VOF10qVjWVjD1RJZbqlhRWZFQscEyHK+z98E7nYMqNw 4R9ImSJxA2sY37IVm79RLXwwDy+8QQL4A/6RMa8O7MFZAu0hkWxBWlw8uCbXDp0e Tgqoh5wGfjq8IYiyVJQUNBCRAAteZl0WMhZqbS7rr30h9u95LNMxv9Gt8kHdMlmB vZc5S0cVVAQz2YGQHboVUerB+m0jD6BQEKw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1693420094; x=1693506494; bh=B/34aYGd//k30w6FAZcn4rQLSn8omlUfm+J uIQdqDGI=; b=In+KJmv1kp6XqtiudbjR4d1p1MACS6EJdB/jlntYE7YOmHkENiw 94pZU35qb54jSOyhROCBdyZJjJwlXjuBsEYgAtR9VpDXbShAJof3KzJnAwigidei vuTsLTIWEHGcfYIqfChEIDn0mmmfKLOgusenxkUM6vwZblGEhUOyTyyli+swpfft DWkWBccN23ADyp/Oz2IvClEYeaN3U2kt6iTv5+t+wzw+0m7EmSPNTM2n1j82uB1b iezbSj1VeP68EIYfvBBcKmAT4+7tArikfr5ZGR0sKTGa2lPsdvdwrgSSFW/7QF3S VJmUzhwXKRkovWljPV7DK59WC3l/pdAtLEA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudefkedguddvjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enogfuohhrthgvugftvggtihhpvdculdegtddmnecujfgurhephffvvefufffkofgjfhhr ggfgsedtqhertdertddtnecuhfhrohhmpegkihcujggrnhcuoeiiihdrhigrnhesshgvnh htrdgtohhmqeenucggtffrrghtthgvrhhnpeeggeehudfgudduvdelheehteegledtteei veeuhfffveekhfevueefieeijeegvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpeiiihdrhigrnhesshgvnhhtrdgtohhm X-ME-Proxy: Feedback-ID: iccd040f4:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 30 Aug 2023 14:28:14 -0400 (EDT) From: Zi Yan To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org Cc: Zi Yan , Andrew Morton , Thomas Bogendoerfer , "Matthew Wilcox (Oracle)" , David Hildenbrand , Mike Kravetz , Muchun Song , "Mike Rapoport (IBM)" Subject: [PATCH 1/3] mm: use nth_page() in place of direct struct page manipulation. Date: Wed, 30 Aug 2023 14:27:51 -0400 Message-Id: <20230830182753.55367-2-zi.yan@sent.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230830182753.55367-1-zi.yan@sent.com> References: <20230830182753.55367-1-zi.yan@sent.com> Reply-To: Zi Yan MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: E9FD41C0009 X-Stat-Signature: 611fggbwh5hgsht1n7joemw6kwoakr34 X-Rspam-User: X-HE-Tag: 1693420097-683406 X-HE-Meta: U2FsdGVkX18OS4WOzn1ASj5szP2A4Qw1AXRFv/rEw/MRbZ29le8jkzNmsA82Sx4PAkOdBoQbyP06xSdfs9pGRuuEfLpiSSEFKTn3AydSpdzKp5Z8Di7o8n23QJupFqDJJyS7Q2rH5JRk2OSvfeFpu+qwxXH7fyPfDVBTMVNjUBxLxsI9nRy7eeG/+ad5M9ppaAfUAWpKnCgzOZNPz8vneRNQZPYjTmm1JIz6NncV6xV7Vh42p6CIya8AOe3Gh11REZfNo/CyXnmnzTPNxuz61dd9JQxfYBiq1teEwKFY8365bphNxXqS6DYMpooiuZm0myDNcsO2k3r5jc1kaAFyQyPcti1vs0lFjy/OSmQq8GQrfRyeiGuSnfq6s4Ly7/u1Vdtf6int3tRSElDi8ACrVs5LTBXVM+qPdT7ywR5Ak+T/M1OTioq67e9qFtKjV7sCfgr9w3FFsA1DJoLHX/bqV8ohv4lwBRZiMXf8FLKWkJnpwdX6U9CIJK3rx6ueX8Ys+KaDWKs1KMBRd9Ibm5QQmqYyjb9cyHb2h6xaFKRzFRBhihauIq5E4n+hyWiLtsAyTZ4Pbmqwkd3XyZvit+xE0EYW3UwF2x62VS9PFnQ/E/jV40z7IOAoGsfS0BusvYPsLrDt++d9DmRfM5aVZwWcbwlIB5ajQzY91ylnDVGA0HNblo1+i9GQiYYwBkDgcSjKpm2tIuX1sFCQ4yizs49rXCoi8rh3x8W4FFfz3oCMfvhhxJy/3vWoIuQ+0G2Z3jbZdlJd+FijqC3WnDFqftIUI/ca7pTNJBJsQ74B3KVOt6+2WjWMAkNRnYa2IxVor1o2EpmQU9O0oFZ29tt3kZVZWPiw6As7Fc3nB11JmdH7I5rp2xe9yIwbJlWJCG4wgEEVIHAwTSdV5K6wnfoEat6Abnj0KbeF6okA1fpnKCPH2OEZBPDm5oqpq12XTeQvmNtUHe5W0j19qVMmh6KOidz 0lPI0JdD Fg1O+GahHArG36H2RERFlUe3/t9oY7WOAtSRLQnJfzf4pZZqYB+4kH1lgxv3zUiI9XtrkS4kKBhafzfoqny9Wzse6+fYIhDodVF6+f/NU5XDBa69r66VFzg4e99yT/w2LGgNuVWmvOFG6eNESU9KG0Y9vxg9RDiFTz/cfOn1T8Z4gVInWEEyz42h9q3VcO9PxVcePXoLoT/D4qs9KxuikJwHS7DCTCyuOwVDSjI3RclSIYvLdGbr6ARWxAZOXW7OaQ60GIhzY3huj17Ahpfh1dUhrt1NHPNrPJ8glENfjS9ChfHB6QK10xOpLTRp33JS373rxNmDADSiFulY0keNhnTYUZg5C+OvQe1+v+0vEHDwQ0lWbONVosLB/WnSTY8wZPjA3hr9gh809U6/ty/5hmNutHM4TLAUiZd32frxulOtSBZ/D/0U2G9YDpop5sJ2OO4JlNZhbatIicO068mY47q9ZFze6VwJp3Oc/5mKdF7xtenQ= 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: From: Zi Yan When dealing with hugetlb pages, manipulating struct page pointers directly can get to wrong struct page, since struct page is not guaranteed to be contiguous on SPARSEMEM without VMEMMAP. Use nth_page() to handle it properly. Signed-off-by: Zi Yan Reviewed-by: Muchun Song --- mm/cma.c | 2 +- mm/hugetlb.c | 2 +- mm/memory_hotplug.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/cma.c b/mm/cma.c index da2967c6a223..2b2494fd6b59 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -505,7 +505,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count, */ if (page) { for (i = 0; i < count; i++) - page_kasan_tag_reset(page + i); + page_kasan_tag_reset(nth_page(page, i)); } if (ret && !no_warn) { diff --git a/mm/hugetlb.c b/mm/hugetlb.c index ba6d39b71cb1..77e8d2cf4eed 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6474,7 +6474,7 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, } } - page += ((address & ~huge_page_mask(h)) >> PAGE_SHIFT); + page = nth_page(page, ((address & ~huge_page_mask(h)) >> PAGE_SHIFT)); /* * Note that page may be a sub-page, and with vmemmap diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 1b03f4ec6fd2..3b301c4023ff 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1689,7 +1689,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end, */ if (HPageMigratable(head)) goto found; - skip = compound_nr(head) - (page - head); + skip = compound_nr(head) - (pfn - page_to_pfn(head)); pfn += skip - 1; } return -ENOENT;