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 73C48E77188 for ; Mon, 6 Jan 2025 10:56:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E04EF6B007B; Mon, 6 Jan 2025 05:56:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DB5A76B008A; Mon, 6 Jan 2025 05:56:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C56796B0093; Mon, 6 Jan 2025 05:56:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A4C546B007B for ; Mon, 6 Jan 2025 05:56:18 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 33AD3161501 for ; Mon, 6 Jan 2025 10:56:18 +0000 (UTC) X-FDA: 82976722836.14.1C40A2E Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by imf12.hostedemail.com (Postfix) with ESMTP id 3DEFA4000A for ; Mon, 6 Jan 2025 10:56:15 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=aXmuVQyW; spf=pass (imf12.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736160976; 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:dkim-signature; bh=AZLWPPKublXNhPBg34EaNBNy6TKJ9wneFJV35MDnpZc=; b=jz5eDU32LZGAtt06oX15HFyw+KnIklXjRBk8DSE/ZBJPMwgtGdOZJsV3VYXThGKGDlsBod yr9ICdX0O1dt1kFSBjpNvjWS1fI01ZogDNQCe7PeUtbR+R9IHZhu6nUvfvph1QtrlWmqLr AnpNy1CWXHM9/Q6XucQmAVMfrtcv3UA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736160976; a=rsa-sha256; cv=none; b=ooH7gTKpJRZ3u6s+OtL6uVmTJb/FvHNiUvIvsAJ4+x/vTeiKbcT0NM97gNaowzVPrEAdGM V/OTkq+QiwLaP9EA9+KzSReikTU4udMRkOnfuAlBrBxilLGMGHTqRE71HQkuJLGnUWBBb6 phM9SqRnq3u6NKgpMiO04xrjpRxwa7Y= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=aXmuVQyW; spf=pass (imf12.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-2f43da61ba9so16472794a91.2 for ; Mon, 06 Jan 2025 02:56:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1736160974; x=1736765774; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=AZLWPPKublXNhPBg34EaNBNy6TKJ9wneFJV35MDnpZc=; b=aXmuVQyWNqi0/QEaunrLMSh7rsixoyEzgKYK4lrGZPiw6W9sUOPpVKGvInJa+Bar7c +Kil+Z/qbuEePmghMdlJx54w8vkOQTkWbVnwqFuVwWpblj6JmK16VhBgmgAdetLDhmaD 5aZeV2X4d4uH9eKLWwfOCFJZVgCcYPsKN0fOpED8Y6tLWE0qNDv8amDzI7OQOEqYelgw 7GWXJsZztd+g+7hOBzBNa0sEzjHkR6vTiA6UOguEpqFiDVIUuzD079m9OWrPh63/SjOT LkpOl6RE0aaDDXE/7c9pbKT5W/zup8QzO4k1aJ3HfP0HX66xoumBhDJ+akJjbhr0qs0s /aQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736160974; x=1736765774; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=AZLWPPKublXNhPBg34EaNBNy6TKJ9wneFJV35MDnpZc=; b=mzj852r/q6HVANIHaxFxDd4Tz3tfXv+GjM0NPMlMfI+zZBZ9az1G15bAbqaeqm+9SL U6KqCT+iAXjk0T9QJWSJqNvDFtB76oN9wtSWdCNI4yNipWD4kSZkqfht6qCDC+7jvppu tRSLb8nkdQ33w8zL+BGigJiumAD9iVwqXa0C/+bh6Q15xqrQ/52W8jv3kyhpVmeVk7BO O0UY50F80rrWslmjD0923tUu56j6pHHsV2nFxad6V8BFeg0Ry5kTqTs7BmpARvRUh/W7 v/szDnDR8dtg4rJ01AXg8VwrRviZh36ynXoABXdYAT8cTxWC4yZuRiSvqjX2DOemL9RY LkWg== X-Forwarded-Encrypted: i=1; AJvYcCUIGyZH66IiF931VFUXtDnBHzxwbcEGQsPO3U8alab9B/FHVamA4yCESNMV8DYQRSWUx3fX3T8pfw==@kvack.org X-Gm-Message-State: AOJu0YyMWBeCVVZGf1a//LK1OWlhDwrbeBRxazEE4uyblhA5SzOmePqL cn6162QahzJGeXODCDT/3eShKw/JTdD5hmg/IR4mV89WbeKs/mildPE7edgUzHM= X-Gm-Gg: ASbGnctQpCaiPiP/eF3uJjR3rTc8ZHnEj9sNcpin7gW6nPaiBHpD4pTkTQFsRekMV5B H2ue3pLNg01Tydx1dwUhfa/i5Qd5aeoM6l+q2K2bd4TUTZV5YMzgV8E6UihXEXbPXQnhnJqL9P+ o7AYIi4LgmMNvJgjtZjpbO/54MKVT4fzhQsUGlajD8zsIgGjp2LTFc7a4tgqfRO/lOpmNqOFwho rn5bwyQPdTwkzcHDtmDbqVDbjuuRrvlwyeHn9x25aCVz8ldtDHqqC6y28C50XNUWvBwoPcQeS5+ ERcYpw== X-Google-Smtp-Source: AGHT+IHHEGVNBdeeeMKsfSrtRayn5rgDW+sVv93AHdkC2kua4+TBudPLJJX1AZ3o0AE+Wq0oFkgydg== X-Received: by 2002:a17:90b:5347:b0:2ee:3fa7:ef4d with SMTP id 98e67ed59e1d1-2f452ec37bamr85837306a91.24.1736160973647; Mon, 06 Jan 2025 02:56:13 -0800 (PST) Received: from [10.84.148.23] ([203.208.167.150]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc96ead1sm290125115ad.91.2025.01.06.02.56.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 06 Jan 2025 02:56:13 -0800 (PST) Message-ID: Date: Mon, 6 Jan 2025 18:55:58 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 07/15] mm: pgtable: introduce pagetable_dtor() Content-Language: en-US To: Alexander Gordeev Cc: peterz@infradead.org, kevin.brodsky@arm.com, palmer@dabbelt.com, tglx@linutronix.de, david@redhat.com, jannh@google.com, hughd@google.com, yuzhao@google.com, willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org, lorenzo.stoakes@oracle.com, akpm@linux-foundation.org, rientjes@google.com, vishal.moola@gmail.com, arnd@arndb.de, will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com, dave.hansen@linux.intel.com, rppt@kernel.org, ryan.roberts@arm.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org References: <8ada95453180c71b7fca92b9a9f11fa0f92d45a6.1735549103.git.zhengqi.arch@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 3DEFA4000A X-Stat-Signature: 91rw9gdhnuy8itkotd6e1f4j887fhzh9 X-Rspam-User: X-HE-Tag: 1736160974-338625 X-HE-Meta: U2FsdGVkX18sDyL6PUUNffE4mkc4vuugirdsZgZ2ve0tfdoFTuXo5gd+P1eKeY65Gi+NJkjZ4o731URKW3dfiGLLa24YvdAa6W2gSiDOsUAKw5ULhY+jDCANv8x8mGVDkaUQMS1kHQqDAQ0XaDTuonntwDoYxh5uUNIKqhs+wmG1icLJQpTg0RonEei6mC3SndHVUVwdQP2ewDbLqyuxeGzKs4CPT7dR5NsclN+OGA8IVH5rc7MhKivAwmeCJ8ppxfaXtIXFcmqcNYrX+sWRO9C66pno3hVhERx9KDmBgUsZ6AJM9W2XUze78ly07ekwK5af97plHFri0PBkVcFdnWrki6U11HwVTpLLhXzWq2yaAAgcFL5rrq0i8wcTLF/D9wWvQmWcm0WU7jmIvzN8xkRvOdpn/ekc489d0EhSM9U+ihJm7HSTwKmeC8VUIb90kX+wGoTUyjIpLEp1Poeq1oziDOCMNJG5nZieDT2r7XlRs1EomheUxhdCTtQCxj6M1yfdadAw4N+63IGTG3cmrE/nQi6sTSgTncCFhGzqBn/HUGEzq2F3NI2dmBGoq1X8Lf8rQSqredWrBWoYv7OgRn8fZ8dP3v83foQ6WxGRPbkyzrC82QV9Tl45gw6vAK8uZaI9Cq5YmaY5ATyAkkBRJpI7YxXovhpAgT+fn0z3CdiM95How65vuXRrwyqd1y4II+uXr8s5lIe2MEhY49w8DJWM6nfpoUTBn7veB4b1V7/PrjCUxRgD1Y/d8XzDrNN0i5Sp3EVI36/fVUJXmsT3NPefoLhV+k+u8IYUbWgSLcJ2FbipOHfM/7TdyJN6nN97LH0quHSmeBxLSoaReyunwovch/vdufNqtXze8gubLExTjq/uIJ6akUuzQJ8kx5Q+6qzwgUMJV78kXaatah6v0euUXKMOSNXKMl2SrRKEtbMtKuGLG+HoxZnQUDjGCyMUAbSrZm3xNdhxFEfnA7i Z37Km2GO 22D1GxkoCBl/PJI2gVKK+qN+amVcQMx3bBbIPG+/LD0/JDpKI7LYKuf7SAQ7Ovl/50k1geAnPoeucLf12fXe2P9TgwGbOSioHcxI6I7hl2EWSWS1Sc2Ji23okXzqmJhB1O2yAqS7jF77zrEfwlLoWRZdy9VvpQ2z8LOL0926b7d0f3I3a2/+Vm3RmhxSWh76DdcyotUzxuMhE0UP3UtXy+YwtawYEwnO0PtQ9SIZIs9vgulebvxNA9LATeT9fPcW8Dti3EGukvX0rfpe+HuiqkfmLJoF3JUOC7QLC651cX1s65geZMVT60yB1lQ97+T2zZgDHXNsXQSlO/x4TagKP4cottb/t6rHv/fPRYTQfdCywkoRX9NMOxYdBWRj/2Ss+z+EZR2MXMhhNpZ/aSmDiIkGNbNN6+0fO9w5+BllPy+xgUSHhwkuK8D9rFZ4l/5bEwW9Aht2+XrnPkiFBqy+rfHKcvvt4SEEzNDADxuuvZwl06lgc0aukd3VcT9wXlm4kbqXQopBUdG/xcJqu/TIPSEkPStCDrbcx1/Lk 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 2025/1/6 18:34, Alexander Gordeev wrote: > On Mon, Dec 30, 2024 at 05:07:42PM +0800, Qi Zheng wrote: >> The pagetable_p*_dtor() are exactly the same except for the handling of >> ptlock. If we make ptlock_free() handle the case where ptdesc->ptl is >> NULL and remove VM_BUG_ON_PAGE() from pmd_ptlock_free(), we can unify >> pagetable_p*_dtor() into one function. Let's introduce pagetable_dtor() >> to do this. >> >> Later, pagetable_dtor() will be moved to tlb_remove_ptdesc(), so that >> ptlock and page table pages can be freed together (regardless of whether >> RCU is used). This prevents the use-after-free problem where the ptlock >> is freed immediately but the page table pages is freed later via RCU. >> >> Signed-off-by: Qi Zheng >> Originally-by: Peter Zijlstra (Intel) > ... >> diff --git a/include/linux/mm.h b/include/linux/mm.h >> index 5d82f42ddd5cc..cad11fa10c192 100644 >> --- a/include/linux/mm.h >> +++ b/include/linux/mm.h >> @@ -2992,6 +2992,15 @@ static inline bool ptlock_init(struct ptdesc *ptdesc) { return true; } >> static inline void ptlock_free(struct ptdesc *ptdesc) {} >> #endif /* defined(CONFIG_SPLIT_PTE_PTLOCKS) */ >> >> +static inline void pagetable_dtor(struct ptdesc *ptdesc) >> +{ >> + struct folio *folio = ptdesc_folio(ptdesc); >> + >> + ptlock_free(ptdesc); >> + __folio_clear_pgtable(folio); >> + lruvec_stat_sub_folio(folio, NR_PAGETABLE); >> +} >> + > > If I am not mistaken, it is just pagetable_pte_dtor() rename. > What is the point in moving the code around? No, this is to unify pagetable_p*_dtor() into pagetable_dtor(), so that we can move pagetable_dtor() to __tlb_remove_table(), and then ptlock and PTE page can be freed together through RCU, which is also the main purpose of this patch series. Thanks! > >> static inline bool pagetable_pte_ctor(struct ptdesc *ptdesc) >> { >> struct folio *folio = ptdesc_folio(ptdesc); >> @@ -3003,15 +3012,6 @@ static inline bool pagetable_pte_ctor(struct ptdesc *ptdesc) >> return true; >> } >> >> -static inline void pagetable_pte_dtor(struct ptdesc *ptdesc) >> -{ >> - struct folio *folio = ptdesc_folio(ptdesc); >> - >> - ptlock_free(ptdesc); >> - __folio_clear_pgtable(folio); >> - lruvec_stat_sub_folio(folio, NR_PAGETABLE); >> -} >> - >> pte_t *___pte_offset_map(pmd_t *pmd, unsigned long addr, pmd_t *pmdvalp); >> static inline pte_t *__pte_offset_map(pmd_t *pmd, unsigned long addr, >> pmd_t *pmdvalp)