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 166E7C369A4 for ; Tue, 8 Apr 2025 17:40:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6172C6B00A9; Tue, 8 Apr 2025 13:40:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5C70B6B00AA; Tue, 8 Apr 2025 13:40:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 466606B00AB; Tue, 8 Apr 2025 13:40:17 -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 273326B00A9 for ; Tue, 8 Apr 2025 13:40:17 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A9CC5140ED1 for ; Tue, 8 Apr 2025 17:40:17 +0000 (UTC) X-FDA: 83311590474.12.900360A Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf04.hostedemail.com (Postfix) with ESMTP id D1DC14000E for ; Tue, 8 Apr 2025 17:40:15 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="KOx/f5Uy"; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744134016; 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:in-reply-to:references:references:dkim-signature; bh=5tE/97qDLNInhrSv41O24hz6k5it7lrWx1B8nzMlNNY=; b=h8SY+7eNBKFeLMw+iSOqqX/qMk1KPVUB980U1wug7rIyNMeM84eyv9xapUkA/L9xUXbN5f RqVTwxwTEYH4Vtimhl7rNQWHruLBlSPNLj6vQ4iiBWmHlIhNW8tP0k+Zx48SL/c9xQfzTl ujTRCOHSWq+7Glca5b9d9Ezi0+Qju7c= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="KOx/f5Uy"; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744134016; a=rsa-sha256; cv=none; b=YOJKM3T/8qnN5CmiXlKzyRt/yws3JT+ppy/hbW7XBt0Pjd5Agga7GHymJUs4jHwaqpFXLt RmjGRLt35AK3x0SMyZem1s4ElUU86rDcIWkEItqZsdN6n4amf+DfIvP7kDkoQMG7NK83AF JLbUKitFPoVcbdkv/PHmtwNsOhCafQI= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=5tE/97qDLNInhrSv41O24hz6k5it7lrWx1B8nzMlNNY=; b=KOx/f5UyipuUZDxVD5jHE+qtD2 eu74DLpYFMC1h+xs/K+Yc3/IGk3Plq8aRYPYtEobrVYMeFJvoXpTOtoRRqrUJBUPtc/oY9cvtp/lD gKRIIV5K3Ay5rO73pxFfgDEaeM4l+kvMJBV/UxCy4LKTUvAXPVBmtE0chmbr9c2fpSmrm4V1I0bvt qVHlSwz6Tx3BeDuT4Zh7G7fi3wuMGEI1XTtoz+ESpsT2mM38529r1gpY1IKCfBTHF7RDItD5mxBJ7 Wah2MxhHtGeY0sW+tFM+xPtnysJSl7HjGpXBzLxKQwN1mbRbcboMHLNFuI3tvLHMlCUzQg23htLGm jl0FA5PQ==; Received: from willy by casper.infradead.org with local (Exim 4.98.1 #2 (Red Hat Linux)) id 1u2Cvg-00000000Iq7-25G6; Tue, 08 Apr 2025 17:40:08 +0000 Date: Tue, 8 Apr 2025 18:40:08 +0100 From: Matthew Wilcox To: Dave Hansen Cc: Kevin Brodsky , 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 Subject: Re: [PATCH v2 02/12] x86: pgtable: Always use pte_free_kernel() Message-ID: 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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9247436d-ae01-4eb8-bd5d-370b2fb2eebc@intel.com> X-Rspamd-Queue-Id: D1DC14000E X-Stat-Signature: gcnup9tgduqa8nrd87sc6spcpet9pz4b X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1744134015-717960 X-HE-Meta: U2FsdGVkX19LNc1g/uUdLOcc1fO4K2Zg8z4O6IIFmUjAWNACr7u8wynnfV8EpxIUrsryl2xR0BtSBx6YUrpWLHMoQ/K+4P7EjNAVxLmF+lk9UkILzqeTjBdAvtPfKrBBq5k/6gpCfAn6ZG9JE0k2XPnH6pNKciPk/IJ+eHctHLu5frvNmjQkDFHsetv7ha8OyseY134M5RYrg3TlmMu2FLAkirsGp2475GG6WkR5gckVgzi5Wc0CzuiFc5ZPHU6YCrBRGQRms5cibnbsuBZLReAUldHaV4WEFaee3fsAidixFVC7E6eHbY8QOffPnwyLrXojdA44C159INwu3Rwf/qYClKd0rehdMUejm8ImulsUHgPQ0e5XL0Zroi0M32BEWHaxYCHFQWLp9C4tdZCuFO/NxB83pGSfVIViL3pZtJvBLcJh8KzC/HhQQlMwRzCx2xOBcl5NdoilnnGErM0TCHvhtqo4oPTSgtSNkoJ7O/m0Y1s7TnrV6oj4lyXeG3HYFP76esYwNuA4aHtfjrwxIza/dHIK1Z//1HcIgkXA+DiNv1OAGt8OuI9t2ODK2w6cDfNqfNtnsIwLx77W4tWswemCPscFoMBFEpImnkaIN1Y/q2w0xIS4ZCiX2dSdSxiONrY5Yg+jhn8hOu1bn6HqtRQycYIbc5m2QHaqfXX9dYL6kPblJp8DTyCeNd2HsQAJTaNF5DTvg5ZuxyC1N75OcT0AlF9TsH5+eX5mcsHpg/9fjBrYzk0knG4oeqvmquI6fZVLcTAqmU+XLjkpDaOqIMD701k1oGZcisqb97UdnW0MlC7LSoF/aCClLztf4BR8jUxWe1/JFquEp/JlzLXdRIKdGC0O0mjPmFwicb5Y/90kcbXxoK5zhwlazQACjphZ3Mp/CWd9LMmzT7Sl7YcLnYcsGPKSjq60+rXfW9I1ElvlAjdXuqCZaLCCcRDqqRLZ7OyqMNmVByyLqMsL3OA us86oWvZ trtqml7+GSOuDm0EsQH8KTXkxf0ZbnhFJpT8Sg1TBhJndzMFsDUgrZxFgMfCPOaXuknXh8aPokV2DO/AP9EpRuqcAdX6XXN1/QLy+fqN/Hi2qUmPg6jg5TF5mfqtzS5J2MvOY76ETpvS9pwNXgcoTC0/m+wV6oFaPjD+Gq/zzMErhwPiiSbifHzjwlTGomlNsa4S14EeElrFNfaDfm3snHxZOYbUzGp3GYNcuiFYKSdT5BRzqiWnIeZjzI6R8FPhsVRyyw7D545WZMT4zaR4+e/A3Ng== 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 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; as Kevin says, this is all very twisty and confusing with exceptions and exceptions to exceptions. This series should reduce the confusion.