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 7E5F0D3C542 for ; Fri, 18 Oct 2024 02:15:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EC3A96B0082; Thu, 17 Oct 2024 22:15:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E74336B0083; Thu, 17 Oct 2024 22:15:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D14D26B0085; Thu, 17 Oct 2024 22:15:39 -0400 (EDT) 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 B2ED16B0082 for ; Thu, 17 Oct 2024 22:15:39 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 90F801A0468 for ; Fri, 18 Oct 2024 02:15:18 +0000 (UTC) X-FDA: 82685106420.06.E4F90A5 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by imf14.hostedemail.com (Postfix) with ESMTP id B03AC10000B for ; Fri, 18 Oct 2024 02:15:24 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jpDOKHFi; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf14.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729217703; a=rsa-sha256; cv=none; b=XBmXI4HFLlgyE1HQYSlK7FyrpkUgWuots0VHo2jcwF8aGVKNQa0VDma0c7GiSSbT2dbpkU vSJ0+BhswanYUjMdLlcWyUTrY8G43vvJTK1IWrAZQkHfhxlEHjsZichpJk02d5f1u+EpZt UrZGlgNICdX82E2DgbEvaNqEM7jUzIc= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jpDOKHFi; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf14.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729217703; 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=o7KhozhjaWb7js4Xtt8+AshRxmmt9OeRn0KLTlJgiVY=; b=jYDUg476DZGudwVvEc2Yv1djN4Spqc14cu3yr8Y4uw++TxcnbNfWFnQp6MJrHeT0YWN1J4 4ywDDWTmpsgd7yy6CDl0YjS4cW3t8rILmIEZ552oD/BwV6oylYt7HXSk7YUDVkG/DW7sfA eiJFzucL1/2Bd7Z+EgMSDGq0fSS0xBo= Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-20c7edf2872so21225445ad.1 for ; Thu, 17 Oct 2024 19:15:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1729217735; x=1729822535; 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=o7KhozhjaWb7js4Xtt8+AshRxmmt9OeRn0KLTlJgiVY=; b=jpDOKHFi6m3ELc1gaTcRrl0p3QcGXXNGJ5uXko+M3hHUlGjrbkhx5sXCkkx/GKh2IG 0rq6GmB2VCI0/tmSLR3tABRUKDkz71nK/MT0Qqoc6kFVLOGonqQBGvIEoy5H1TOH5U9l 4z/boarYVsSeiKp6CXGg+3eUvtJ+/Nv59o3qhwxrIeEb8O9KxQyc70XBqP9twJXKHNwH gcGQUK/Ke1pkPv+Ybiqt2/dCuFYyzzPbB5S3//shSwtvGkGPG921v6Jok5RdT46kwF8c 5CUWWJ9vszCIanAXog7OPOVtHuS5I3TdDjs9x4l7yFaLZ0q5hjODh/nQDNOw3uCp36G1 3Hxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729217735; x=1729822535; 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=o7KhozhjaWb7js4Xtt8+AshRxmmt9OeRn0KLTlJgiVY=; b=ptEgMMpz1m5Ccy62GUqv2DzgvYwfH6eVV+C2nS4hUwK6J1QGtHHWLZFPWRETgKuv0T /1XXoim4oWp9VD8pfPx+kT3+sjd/z3179bVvcKNRtnITamKUQSLUQI8zaIZ6hKEhQis9 Ryce3HSD6LOJGTb5jtUYX1aMkrVXIUdr+ye50g22IXwIGEF0eSSUbgJ4S8LA4wN8SphI e7nV45JiRrXSKz62w3CMVRIPKSX9Kk3GZyPRUtE2Cvv/VHjN7/RrpCBDplEnXukB39/X 9OZghOkNUd0Qb4K6NFJg4zT7Xg1OfzZC/cqSwO6OSB54UOu5LBr0AghSuS1hm2MNsft9 vTjA== X-Forwarded-Encrypted: i=1; AJvYcCXep3KokFVvy3paP98MJZ3hub0TuMI+BCuLk0lcmf46NL4llk0fFL+T2ly/Ray6ycHCIKKA5hAdHA==@kvack.org X-Gm-Message-State: AOJu0Yxergl3FtQA2qfNfYoeAZV4ejkUm4CT9Cdf9qzqQRxyK/B1Dm8Y U6aV22FISzI5gcqkhHuj467YoLSMrbZ2/Ir5rXs5RKfJhEsQGvu2CL/Be5PFKFY= X-Google-Smtp-Source: AGHT+IHpcewVlhukOGgBQOKmFzU6YT8su3lwe43Fb0SlS1dYk4+rLzWwY+qeIRFQyXBGdSGv5yYIWg== X-Received: by 2002:a17:90b:1e42:b0:2e2:b94c:d6a2 with SMTP id 98e67ed59e1d1-2e56391a323mr1282716a91.0.1729217734982; Thu, 17 Oct 2024 19:15:34 -0700 (PDT) Received: from [10.84.149.95] ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e55da7b3bbsm627783a91.56.2024.10.17.19.15.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 17 Oct 2024 19:15:34 -0700 (PDT) Message-ID: Date: Fri, 18 Oct 2024 10:15:26 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 1/7] mm: khugepaged: retract_page_tables() use pte_offset_map_lock() Content-Language: en-US To: Jann Horn Cc: david@redhat.com, hughd@google.com, willy@infradead.org, mgorman@suse.de, muchun.song@linux.dev, vbabka@kernel.org, akpm@linux-foundation.org, zokeefe@google.com, rientjes@google.com, peterx@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, x86@kernel.org References: <258de4356bdcc01bce0ff1f6c29b2b64a4211494.1729157502.git.zhengqi.arch@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: hrgj9r7ppc8c7a7n6mcd8cors3yhsmr7 X-Rspamd-Queue-Id: B03AC10000B X-Rspamd-Server: rspam02 X-HE-Tag: 1729217724-197391 X-HE-Meta: U2FsdGVkX1+X+m1pFoj35I+CxNoPtJvefV5RjRPLcKTttebKVfTfG3ntTeupdWM1BQsLFb0U8eZNTNK4l10bZCAoGAZnzhIcL4OA9N5LZsddnte7VlaHEOG9e5WSUU/DeZyfHYSgW5Q+LGlbwOvP+uEQqAZNFIP846cRSiHOUGP6BIhjO7RKqrVqEJCMq2QBzpW0SVmO+CAiVs/tB8qj4/jERqmDQviMOFSKZVyH3K+ETfga6vVy/E6p4Cq3UqxzWsWKaujr5Kat6mN4Mm+VMpEs9ofE4edmGqrSQHFoT61AV7mqpJrbOrJdgHWZG17fTsYAziNg86ADigvN+IuH93dY8Quk/uQsne1hGSieE8JHOSW0/hhj7Hg/+0VZv0etWAv1eyzgCTb2DeKAcvxRSBTW/wv2nMxKRapJqecfOurd0LOyzeEjth3x3vIWq22dGQMj7tBvD+CD+aM5QVN62WelUBWx+oTm1kliDlLxQcm/SmWBozoMEe0N1W9UpIQeM2ArHb9qlp8m2he7+HotX51GVTF5VTisfcvPzqreVhJIoiv7IlNUx/sdtBqevItoJ1tWVxV0Xq4/IA1MkTnA+H9GUplUN3MCBxJRnV6Ot1z1AY6tEq0ZOtYChYDMts6Bsa1iOfIdotSP1x5IqSvPZ41SIGuwaa+SySOiW5kB+XZ3TVwoQnJzaZ4BPJfGBY7HCS/OQpPyuL/ylHO8UQtKPNQLqIWnI1+hKN0ywWkA4rKwR0LpqYcSfETw23vL/XpiRTYb8L62yF25c/euB9ZkVMugwcCvHiJGnjXtSGzQ6GDj9F5YQcaUUWCbgTETwLpq2DQuEnNonTTlxfv06PSInqcwWiFXvmKr+hAEK5tibzDV/gDcbgJ8z0AFDmlY6Z3jyrD9YOfcVPFlUI+rbRwMzIC3LnZzhYmmvEn8eGkMO0xIa2TkOgDWBGIcx2LJ5sT6peBP0ZKi7MhxaJfywOe D/IitOeM LSGvnf+qQlb6ihw8ywEpNHXKw3DbM3IVdhqwdQht3GVXUsePsbqlP/afH0kyikxFmDl444FPU2MD8Nczws9dUuo0Mxj6ALNd+zD/32IwZGQtpNyl0XKPuTzF+Ltl02048wbokxfkf7JtK1eV8H/kAF1+cdd5QqVKMFkVCQrOG3aSw9HLngtVI2BE1uKINV0C2jGcq8B6QTGxL5esMWGVA5Y2snQamqh2rFc665ok7vw/HLytyCSj7vGVqIyi2pjlapR4u3FarggLvI4h1vk9f4RCoencig90o7cnxJ4XqH3tU+OvXicLrH6d9S0rhpEfHQkJK2Slgmnsm6SO+9hKiFO61o2o0AhN0Dcf12q6vsC0/3/NqqG0v9nheDQTxFtKiH1RQl2KYuM6LmP3KQs3mCuBA4wxgPzFH5nCX8owlpXvcY3LaXdWxvG9puQ== 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 2024/10/18 02:00, Jann Horn wrote: > On Thu, Oct 17, 2024 at 11:47 AM Qi Zheng wrote: >> In retract_page_tables(), we may modify the pmd entry after acquiring the >> pml and ptl, so we should also check whether the pmd entry is stable. >> Using pte_offset_map_lock() to do it, and then we can also remove the >> calling of the pte_lockptr(). >> >> Signed-off-by: Qi Zheng >> --- >> mm/khugepaged.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >> index 94feb85ce996c..b4f49d323c8d9 100644 >> --- a/mm/khugepaged.c >> +++ b/mm/khugepaged.c >> @@ -1721,6 +1721,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) >> spinlock_t *pml; >> spinlock_t *ptl; >> bool skipped_uffd = false; >> + pte_t *pte; >> >> /* >> * Check vma->anon_vma to exclude MAP_PRIVATE mappings that >> @@ -1757,9 +1758,15 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) >> mmu_notifier_invalidate_range_start(&range); >> >> pml = pmd_lock(mm, pmd); >> - ptl = pte_lockptr(mm, pmd); >> + pte = pte_offset_map_lock(mm, pmd, addr, &ptl); > > This takes the lock "ptl" on the success path... > >> + if (!pte) { >> + spin_unlock(pml); >> + mmu_notifier_invalidate_range_end(&range); >> + continue; >> + } >> if (ptl != pml) >> spin_lock_nested(ptl, SINGLE_DEPTH_NESTING); > > ... and this takes the same lock again, right? I think this will Oh my god, my mistake, I used pte_offset_map_rw_nolock() at first, then I changed it to pte_offset_map_lock() but forgot to delete this, and because my test did not trigger retract_page_tables(), so I did not find this error. Will change in v2. Thanks! > deadlock on kernels with CONFIG_SPLIT_PTE_PTLOCKS=y. Did you test this > on a machine with less than 4 CPU cores, or something like that? Or am > I missing something?