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 8FA8AC36002 for ; Wed, 9 Apr 2025 14:50:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA56228008C; Wed, 9 Apr 2025 10:50:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A560628008A; Wed, 9 Apr 2025 10:50:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9474F28008C; Wed, 9 Apr 2025 10:50:16 -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 75A5928008A for ; Wed, 9 Apr 2025 10:50:16 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 478D6ADBA7 for ; Wed, 9 Apr 2025 14:50:16 +0000 (UTC) X-FDA: 83314790832.07.97707A3 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf29.hostedemail.com (Postfix) with ESMTP id 53042120016 for ; Wed, 9 Apr 2025 14:50:14 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of kevin.brodsky@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=kevin.brodsky@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744210214; a=rsa-sha256; cv=none; b=pE/sV6tQtIVepi6jEOrgyu/V4tvrmL1JXx4kOg7kLuXttWtSTKYnq5dMl61PyxXy8oLT8i xPFUkv6BYwMUl+A4uxEOzDrr4N6yOW+7jVI+MRWAyYpz2cgJJUgdE2CZWyMAszY6gkZ+Nu QTuGA9UY1PLRbYD6FIqz4ICDk04JfqY= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of kevin.brodsky@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=kevin.brodsky@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744210214; 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; bh=ysq3Coq358H4yMpQcctd5puOMXBWwelZzURuknrY7ys=; b=fmm9hdgcHq/T3p4tlrXGMLC98z4QrRYxfmpQnxyeGnTRxHCJFXQrSHybxMy7JanJ62q8bc BjVGVlFaHXfquSmElw3E2bZIj6M6HFztOqv8422nElFND/zyMKZXVUcMDPUp82Dpdw+1+C ruBhDpAeG79bHNtWIzd85io8wOqBvAE= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 52F3115A1; Wed, 9 Apr 2025 07:50:13 -0700 (PDT) Received: from [10.57.67.254] (unknown [10.57.67.254]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 58A653F59E; Wed, 9 Apr 2025 07:50:07 -0700 (PDT) Message-ID: <99771f33-8ad8-4ba5-9cf0-f504588d99a0@arm.com> Date: Wed, 9 Apr 2025 16:50:04 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/12] x86: pgtable: Always use pte_free_kernel() To: Matthew Wilcox , Dave Hansen Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Albert Ou , Andreas Larsson , Andrew Morton , Catalin Marinas , Dave Hansen , "David S. Miller" , Geert Uytterhoeven , Linus Walleij , Madhavan Srinivasan , Mark Rutland , Michael Ellerman , "Mike Rapoport (IBM)" , Palmer Dabbelt , Paul Walmsley , Peter Zijlstra , Qi Zheng , Ryan Roberts , Will Deacon , Yang Shi , linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-openrisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, x86@kernel.org References: <20250408095222.860601-1-kevin.brodsky@arm.com> <20250408095222.860601-3-kevin.brodsky@arm.com> <409d2019-a409-4e97-a16f-6b345b0f5a38@intel.com> <9247436d-ae01-4eb8-bd5d-370b2fb2eebc@intel.com> Content-Language: en-GB From: Kevin Brodsky In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 53042120016 X-Stat-Signature: 663opgy8ysq95cihrodxj89o1c4djmnm X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1744210214-285463 X-HE-Meta: U2FsdGVkX19vsHw9j7ssN2hZeCWDHLGc4N7hDUcMj/S74gx75PWgER+yerp8lGNSyf9igAKKUmXBF7edGS6+W0eTD47FGggVahQ8mDfPNNg/cWTKK8xUzB+qMIXuQImbiDdKtv1tEt8xyfeEog+gL9LiIVW0xXuPGduSCuozeIB812JDeNIBPV/RlqilXrZF2OHcbrgfQG1XkuhU58z5CZCkLIYxg+t7LoPuLIeWCg5+Vg/kCjC8z4yD9lmm6MPVyo3XlX3NhPTaxLgCI3y/lyZZfInM9Xm6OWAzRhJR4I/lC9wT+wlKVHwFLFkU6DYqHXzzT7wHsD7yCE3mOv73jjVOHx3DW94XRztmFWuyP5mlghIr2t97+0R7NUF6asvYzHpCautCahzm4Jufc48y13RaQ0Fs0SYlkuK/auCPCCb+cVkk8ZGrWVZrlzeMiTL0AOCTQOwoz40ODWDoXBI8CE2D9EvaFPszaRj2zr3JkNy6qb2NeJjbXon1xywxf6QMW5qDoy2sNzHL1kaXLwNlKiDxYLp4ZVK+JFBqV0iFklbwmfcJC9CW1VPHoypRI4l4LND4xHzbrtsaJxBm8nZPzXaVBx+K7v39sRnhAki+c/OWnhjifxIaiNFQyVo5xeFQ3waKIyH5KVsqXmYcbs5E31siSIiCXLCMjf/RGYJ8MQBFZ0Bn0sBQ6aOISYhBAGM/dcqNwUriFgyswHsdIJpEk0aDWNtxtSMeR2TqOTtld46V21s/RZXJVjVzmU5EJ9ZDJA3enSCI55ChkGGhxYlsNSNzEG8UWMWb97xJ04ECk0hKh4w/IV4kvFKS2l7+0R9q+SCMnOmTcikjyhqfu5pDu6xLh3bcagZrxBvYTDo7umS3onsTUIoGqM80hygTKn3vNpnmpj6ybZ73R9gbfFTNAZGKYW4+WzrF41k4r8LfUs+SC3a80yU1O/UZOTnvC0dHTRKsLWdqkNhj0po17op EJAi/yPe a+apxRnB7QX3HwrG2g84ps42i+2m5uGB+IVRAMe9GwYvaIAsyKlU77nMcscQOMm9hn2670/p+ty+cs4aQCp1QVY3tD0Kgry1hJhBde1sQDVSBOjHAHoFHidHC7YD7gCyTV2rTV36R9yTEgR9bIR37u5qmkAhiNvEzLBdaXtnld7rWKFP6TExpsTcdk4RCrZS0Jm6ARjoDGYHVSyHQUldUqBpdQDhhVCjYXBuIknomerbs3CI= 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: List-Subscribe: List-Unsubscribe: On 08/04/2025 19:40, Matthew Wilcox wrote: > On Tue, Apr 08, 2025 at 09:54:42AM -0700, Dave Hansen wrote: >> On 4/8/25 09:37, Matthew Wilcox wrote: >>> On Tue, Apr 08, 2025 at 08:22:47AM -0700, Dave Hansen wrote: >>>> Are there any tests for folio_test_pgtable() at free_page() time? If we >>>> had that, it would make it less likely that another free_page() user >>>> could sneak in without calling the destructor. >>> It's hidden, but yes: >>> >>> static inline bool page_expected_state(struct page *page, >>> unsigned long check_flags) >>> { >>> if (unlikely(atomic_read(&page->_mapcount) != -1)) >>> return false; >>> >>> PageTable uses page_type which aliases with mapcount, so this check >>> covers "PageTable is still set when the last refcount to it is put". >> Huh, so shouldn't we have ended up in bad_page() for these, other than: >> >> pagetable_dtor(virt_to_ptdesc(pmd)); >> free_page((unsigned long)pmd); > I think at this point in Kevin's series, we don't call the ctor for > these pages, so we never set PageTable() on them. I could be wrong; Correct, that's why I added this patch early in the series (the next patch adds the ctor call in pte_alloc_one_kernel()). The BUG() in v1 was indeed triggered by a page_expected_state() check [1]. > as Kevin says, this is all very twisty and confusing with exceptions and > exceptions to exceptions. This series should reduce the confusion. I hope so! - Kevin [1] https://lore.kernel.org/oe-lkp/202503211612.e11bd73f-lkp@intel.com/