From patchwork Tue Jun 20 07:45:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hugh Dickins X-Patchwork-Id: 13285276 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 3C7B7EB64DC for ; Tue, 20 Jun 2023 07:45:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D1F7F8D0002; Tue, 20 Jun 2023 03:45:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CD02C8D0001; Tue, 20 Jun 2023 03:45:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B988F8D0002; Tue, 20 Jun 2023 03:45:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A9D328D0001 for ; Tue, 20 Jun 2023 03:45:34 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7ECD81C8427 for ; Tue, 20 Jun 2023 07:45:34 +0000 (UTC) X-FDA: 80922341388.16.C6D6FA9 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by imf07.hostedemail.com (Postfix) with ESMTP id AA0884000B for ; Tue, 20 Jun 2023 07:45:32 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=jZI7lGkG; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf07.hostedemail.com: domain of hughd@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=hughd@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687247132; 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=7tbEFbFk5pzLjwVra+37SCseEW8dJexk2Np2YDtZH+c=; b=IVfMx+SFh5oRs65A789JtE0p23vi3jRI5KZeRokV15wIZd86pGhGxW8YkALYAD8pVYlMik 8FHiLL4BYKwvgxWNtBI2H0UkT86dG5tDtEqXuq6Jvn11SeV3HARm4uuY/g5npFsVVMnplP OQj647qR1JXUK5PrBM5anGCFj8uOXx4= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=jZI7lGkG; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf07.hostedemail.com: domain of hughd@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=hughd@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687247132; a=rsa-sha256; cv=none; b=bTm74q3c2u9qjwADLZXKxtYEaDZFlhky2obLy3xAEP8dugrZlN1MMzFjkq6NseZl4L9Tjw Ofr2RbgXhAOzMxGn9+YzFhYs1blKO+GtHGdLAoPsgPuqkLagCsjagSzWtcOAifM850zgvD 7ZWRVJ6nZEywxE5zBWWmn73gz5/Lqzg= Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-5701810884aso39616777b3.0 for ; Tue, 20 Jun 2023 00:45:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687247132; x=1689839132; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=7tbEFbFk5pzLjwVra+37SCseEW8dJexk2Np2YDtZH+c=; b=jZI7lGkGOA9VplRFSG9/39QEHLqEHFn81AVfRltHoq/8iNx7aAWlNrNyFe+XyF0lml Bnzro2qd7JBTjoGR7k3DplV7l1biYn3/LoxKNyegFiBFIRoYqaL2y+rd8Ux0pQmhTgvs IUPCYgX4z0WdKLSspIafzLUn3c05nMTizwc56jirtYHMfRSc/oqFfK7oTa/fwkNDoThq 2HdR/Am0ViDDg3zBY7MZWP/MVjmD1Yx9xMfwqoDnIfAkP9LmxM3rFBDQvW9AFIfnglmj paE2iSuMCCu/tpYLxht5C/v0kudDdPO6A0RSV0ftjBtK/MFrCHoTJHxirOjy2uYrAODS XFsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687247132; x=1689839132; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7tbEFbFk5pzLjwVra+37SCseEW8dJexk2Np2YDtZH+c=; b=DUscB6R2mnAwYuaCyj+dEedYoXXyK+UkRmtJcNV96kMfU89LXzg+VopOWeILOVoTOM mfZJPKNikV1e7+r/+NZQLsTJOZSGIY8ONlJQvt3h1fMQeZYN3FSE2fdOuWt2ImxWC9Vb BxqISAryHmaSqVcESVF4+4gu79DJDP3dlBHwP8l33GSEqZEfawDmZuwdoSZnLGTy2KOK Cf3OZPjSUySHOGuHRHEIi462XQ0kwxIX8RKWHUXftv5NF6PDpxRLh/keDtWz7AabEdIk RVsv846I8E2Oq0rXARCd93OIyvGVnwOFG/mQey1kp11K7PITVlcgHDysYfok6icW/RlS 4xYg== X-Gm-Message-State: AC+VfDwjWLHHT5Hw8zymHaLixgQfKqX8G5Uf6F/iNFWWOqN0E0eBtH34 LafK1x5leK2DkaJ8nketvXqHFw== X-Google-Smtp-Source: ACHHUZ6lVvN31sBriyHtQUo4iIlWjUc8vgsx+qnIrz5Kb8Jhe8UJO9QGV+cM44ErYZUti1LdEdlZpw== X-Received: by 2002:a81:7189:0:b0:54f:9cd0:990 with SMTP id m131-20020a817189000000b0054f9cd00990mr2846044ywc.18.1687247131680; Tue, 20 Jun 2023 00:45:31 -0700 (PDT) Received: from ripple.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id o9-20020a0dcc09000000b0056d2fce4e09sm379759ywd.42.2023.06.20.00.45.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jun 2023 00:45:31 -0700 (PDT) Date: Tue, 20 Jun 2023 00:45:26 -0700 (PDT) From: Hugh Dickins X-X-Sender: hugh@ripple.attlocal.net To: Andrew Morton cc: Gerald Schaefer , Vasily Gorbik , Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Qi Zheng , Yang Shi , Mel Gorman , Peter Xu , Peter Zijlstra , Will Deacon , Yu Zhao , Alistair Popple , Ralph Campbell , Ira Weiny , Steven Price , SeongJae Park , Lorenzo Stoakes , Huang Ying , Naoya Horiguchi , Christophe Leroy , Zack Rusin , Jason Gunthorpe , Axel Rasmussen , Anshuman Khandual , Pasha Tatashin , Miaohe Lin , Minchan Kim , Christoph Hellwig , Song Liu , Thomas Hellstrom , Russell King , "David S. Miller" , Michael Ellerman , "Aneesh Kumar K.V" , Heiko Carstens , Christian Borntraeger , Claudio Imbrenda , Alexander Gordeev , Jann Horn , Vishal Moola , Vlastimil Babka , linux-arm-kernel@lists.infradead.org, sparclinux@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v2 04/12] powerpc: assert_pte_locked() use pte_offset_map_nolock() In-Reply-To: <54cb04f-3762-987f-8294-91dafd8ebfb0@google.com> Message-ID: <7ae6836b-b612-23f1-63e0-babda6e96e2c@google.com> References: <54cb04f-3762-987f-8294-91dafd8ebfb0@google.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: AA0884000B X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: f5s44m7g8hqjcrg8wsyxs7ucp5apms9g X-HE-Tag: 1687247132-613256 X-HE-Meta: U2FsdGVkX18J7WXDzkDQI/s00/Rnh7uA0A1igJTP6oswuDMX8CASfdrS8tA9g8q5dwpsiF7RtckYsH6yaJOE+6v4OZIYfAAVsn/uOTaycYid8uQc7RqZXAqL0xplpjLr2YFxy7rEs9LB1gEliL0JD7nhFg4XG6fRGPslsj/XWqmLzRSscSdfw++crwFFmVPcYINpcgRaCOEGAvwTc9LUk2oDQeJITeAgTcLoZbFhlyioRZhKSeKKlETEChyUH3AHV+BgibYdMp+4fsgqZbkgslkS3Cwrt9OsI2TbIrfGzd2N5DxvRZ4PZM3hC/fVdma/nHVbwB3bgOWtVDVzk1rulSBfKuiAjKGy9htqKwqosAYAQ6MMS/qHg1lnZylLBYFJTgG2yAdbh/scvuGzp3LxdMK3WknCxURqXrqZi+SBy+8uX61HARqApo8lVgz1oEdSQqU2r3J6bwl0z7ul/3XjZaIIqrxhHw0w9OHj4e/e4ERulk8hxLTKGfzqPwQcsCGLK6W92Fi85OY8jCy3IbcCW+HpJuxDwFayudEOj7TaqYU5XApyE/41yiPQwXXzNTTOlYRs8W7rrSkWBBJra80Sz/83VC8A8wVnurOVYudslImfN72froN57ffiyM90gPBAvD+ak9U2Bn90Wl9GJ+iUYoptY44czpVyLkyx3q7LXDB+RZcC02RpvAOTCCgaEkEYbleaJ8vG4alHws2fRnJ2CqYzS3NHYMcaUDhYtzL+m36kjyoKFHo1LOgkws/OlCgAu6FN8yT9Ynug1Q9alvQYnt0VjIRxe3KW4aa/PoOnFdZaVfI058a3O6Sm5sFoAi3rWVz8EOP15c2++Xvdd8qV9Of7sIi1Ez0wOj/FEOsn7onvpsbZ2FA6pP0F3F/CDmwC2B6g/jo1KWnG8WMemQxc5qXSMhCsicbrv411pZMGAfBh78V332ULCQ0mP4c3AfBJUNXQeWutk4NYsSpodJp PsDwICJ8 xYZhMITMmULuwOlBkaDFMLiTnLdcs2iPbyfMLRQta9lNbCM+zk5w7T+PslNvrlvskRVxaEDHxEmMNDXiqgMOCQnwGdXCSj8czX4EYfZmkjL2TEFPGOfklKb6X3bik+lFSAeflbcokwqaXKeb/RlIKkFAUM2r+1EBJJhOwOFQdrseSySc+x7CP0OWHglLri090YLr5+n0+dWl/2ihBgG0U8KYlnLqpaBPd2d1q+UCfOh4SaIgQlBybZ+ZBEyPkVRUXw/LW+wUrjgc/ovOPPdJlNfIeBgChJO8xa5EulTh1eTdKUUC22QFP8j+h2+QITk1CMNARFWGdH53w5wTydLeP/p3RUMs02IHZTgNXQFiJj5DVcnHBDGALpOt/sVsDlIG7JD3EL9/Le1DhtsD0XqsSg8WDN2SkYOOhwgvDOxw9NTeMwItl6mrn/voCfo6tCW8yQ/AVJ2aS6BMPIupnB1ojk6g9Dq+M0m/leh+e0eU3HA08JF8vQaVGM+3fUtZUf0F3+qyb 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: Instead of pte_lockptr(), use the recently added pte_offset_map_nolock() in assert_pte_locked(). BUG if pte_offset_map_nolock() fails: this is stricter than the previous implementation, which skipped when pmd_none() (with a comment on khugepaged collapse transitions): but wouldn't we want to know, if an assert_pte_locked() caller can be racing such transitions? This mod might cause new crashes: which either expose my ignorance, or indicate issues to be fixed, or limit the usage of assert_pte_locked(). Signed-off-by: Hugh Dickins --- arch/powerpc/mm/pgtable.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index cb2dcdb18f8e..16b061af86d7 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -311,6 +311,8 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr) p4d_t *p4d; pud_t *pud; pmd_t *pmd; + pte_t *pte; + spinlock_t *ptl; if (mm == &init_mm) return; @@ -321,16 +323,10 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr) pud = pud_offset(p4d, addr); BUG_ON(pud_none(*pud)); pmd = pmd_offset(pud, addr); - /* - * khugepaged to collapse normal pages to hugepage, first set - * pmd to none to force page fault/gup to take mmap_lock. After - * pmd is set to none, we do a pte_clear which does this assertion - * so if we find pmd none, return. - */ - if (pmd_none(*pmd)) - return; - BUG_ON(!pmd_present(*pmd)); - assert_spin_locked(pte_lockptr(mm, pmd)); + pte = pte_offset_map_nolock(mm, pmd, addr, &ptl); + BUG_ON(!pte); + assert_spin_locked(ptl); + pte_unmap(pte); } #endif /* CONFIG_DEBUG_VM */