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 1DCD9C46467 for ; Mon, 16 Jan 2023 19:18:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB76E6B0073; Mon, 16 Jan 2023 14:18:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A66DE6B0074; Mon, 16 Jan 2023 14:18:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 957216B0075; Mon, 16 Jan 2023 14:18:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7BA5A6B0073 for ; Mon, 16 Jan 2023 14:18:13 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4F3E2AAABC for ; Mon, 16 Jan 2023 19:18:13 +0000 (UTC) X-FDA: 80361622866.17.152A255 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf02.hostedemail.com (Postfix) with ESMTP id 2225980015 for ; Mon, 16 Jan 2023 19:18:10 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PCciRYbL; dmarc=none; spf=none (imf02.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673896691; 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=WLhEd5kwcSU8ct7rTKFT0pGKMvGTjOZ9ZKKpw3j5Vt0=; b=fgvXWi6DL+LUACbvs0Mc0e85Pawz/NMrkyr8ufB42mu075MfCslQRTF7K95p7ys4/ylOSe 4MwDbmpGJ6hFPx9tOzO/k9Q2wAVKtbagQDXakoeIkmD1qX0H4yyOMS0OddxUcISxlX+vch TlKiFdELaePqPCgnAWV4G8B1f0rfo3o= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PCciRYbL; dmarc=none; spf=none (imf02.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673896691; a=rsa-sha256; cv=none; b=u23aDlOuclw1V75ZDc1xmDQ1yC6HILR+4b+qLhqiSrWHXV4HQXcd4Dmj/mCF3LakWGF9lv Ecf8O+Hz6P7ByPpj7dE9xpGIsWwQNoLFyH/ysVa0swdtwoT/bJhhd7rHdKPDp/AEUihJSh vJZvtePuyj36h6RvPb9EoWwDVtahL8c= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=WLhEd5kwcSU8ct7rTKFT0pGKMvGTjOZ9ZKKpw3j5Vt0=; b=PCciRYbLaA9MWvSEGKd/OnWdeN Px+Sqi1K+Vut0s9JiBqxaAeYDjE7FgQx5tjfoUJiOo9LtkJEoRyXGY9W/xGKyDM1i/x5ycKUXl/jL 7xkqPZSw0vJnQSVaAbpP16VCqamTog6d4aDq/gNLSeepEFKjOAJTJwJlIQnf/vTR+PAituKcu1JX6 cFGoSEjyvSyhxQptSc/xRmSpvoWb2b/ilxyB6O/CVnCFuYsSDGMOgyvkH4QX3rv1qlP7Ewbexvint bfsK7CCv7k9TzxDE135BUdmpWtuR1nqR+qHj3fzjB4B09sjMEbDU5sEpFzbVVHIskHrpt/4MfFIKX atu3vnYA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pHUzn-00904p-3z; Mon, 16 Jan 2023 19:18:15 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" Subject: [PATCH 5/5] mm: Use a folio in copy_present_pte() Date: Mon, 16 Jan 2023 19:18:13 +0000 Message-Id: <20230116191813.2145215-6-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230116191813.2145215-1-willy@infradead.org> References: <20230116191813.2145215-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 2225980015 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: xmnf6grpccx7g7uu1gzs6bu5e9ky4rku X-HE-Tag: 1673896690-883211 X-HE-Meta: U2FsdGVkX1/u7mBYVt906lMVkKo/ktakV4gHozA2XNkqYCZv3c573j81npU5hTyExbE11VGxH+P5Dx4Kb/l834u7JhRzIxEheOe8Fr9h/Z2bNsJZ9yuweJpzD6vhGwWoKLkYl6f/sERa5KQ7m/YUM9Y9H73/WJDbRXEdGbqft6Gphrk7eo4Gq5k+DySngcxKzSAyaKiPJLFEAXe/AibrSf8GSDoq3+f3SMoHPuQu880jfO8+wfnZKQPPMghP8TvqTG/tCAFJ+cD/ersv1SnPreByXFZOjkYQUOOzRZohzbewXot29JvtbA/beNFBw0oXtwEIWYWClI6WQdVP6G6o2sPnG0TQ+OA1jPbVOSnoWNb8+Fu2wWRloUC3ogT+UN9YpuPPPjxYohiphNN2C/s0jnPMJvvah92GNOcl6yiR+YDMznlwOFGqxZNXf5O1TslzplGg04ndGb15CMB709C6lUl7u4en8TocG/9OHujDxVhxjzzZMoHB8wlB282nwHN/6c5ln+9VgqPNnJSsUucTvsHuVO6LWEsMTru0ILaydY26G2Ps3Tlut7Msd7DC09Mh9RyVY7lQb7vuPQpIsJjhokJzLI8uUbgEc6yvxsOQR1BgCSNZM770lqwbzG9BGtMk3wNHrY7+QcNUElvazNm8klOaBbcqAXsFySSmgSjSXwpV/CI9yt/eHbVQMq+iIJOePfEIQvnXs/KS9hEKCBrFH4NKNsDkVrLCvF1ckWHmuejbgOHOdvLllrjWc6M4ebOgkid7BpQu6kI849upSoY/JLv+PCmSHz5z/G5c+ikmsWfYT6Ezk09GgszWdDiwrwEeOb9tYBrPJ8L+R2EV7C7l4eUEDe4xwVAvQ+O6Bd5rgd0v53yH1eUbEq/MRUzT3ueDFytJIXdkzVcTQthQRbUts6a3ZBVs/sGN+XDmiBrxzCkMT9H61HZjtA== 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: We still have to keep the page around because we need to know which page in the folio we're copying, but we can replace five implict calls to compound_head() with one. Signed-off-by: Matthew Wilcox (Oracle) --- mm/memory.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 7aa741a3cd9f..ec833a2e0601 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -906,25 +906,28 @@ copy_present_pte(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, unsigned long vm_flags = src_vma->vm_flags; pte_t pte = *src_pte; struct page *page; + struct folio *folio; page = vm_normal_page(src_vma, addr, pte); - if (page && PageAnon(page)) { + if (page) + folio = page_folio(page); + if (page && folio_test_anon(folio)) { /* * If this page may have been pinned by the parent process, * copy the page immediately for the child so that we'll always * guarantee the pinned page won't be randomly replaced in the * future. */ - get_page(page); + folio_get(folio); if (unlikely(page_try_dup_anon_rmap(page, false, src_vma))) { - /* Page maybe pinned, we have to copy. */ - put_page(page); + /* Page may be pinned, we have to copy. */ + folio_put(folio); return copy_present_page(dst_vma, src_vma, dst_pte, src_pte, addr, rss, prealloc, page); } rss[MM_ANONPAGES]++; } else if (page) { - get_page(page); + folio_get(folio); page_dup_file_rmap(page, false); rss[mm_counter_file(page)]++; } @@ -937,7 +940,7 @@ copy_present_pte(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, ptep_set_wrprotect(src_mm, addr, src_pte); pte = pte_wrprotect(pte); } - VM_BUG_ON(page && PageAnon(page) && PageAnonExclusive(page)); + VM_BUG_ON(page && folio_test_anon(folio) && PageAnonExclusive(page)); /* * If it's a shared mapping, mark it clean in -- 2.35.1