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 771DED3C52B for ; Thu, 17 Oct 2024 18:01:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F9366B007B; Thu, 17 Oct 2024 14:01:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A9F96B0082; Thu, 17 Oct 2024 14:01:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EDA176B0083; Thu, 17 Oct 2024 14:01:12 -0400 (EDT) 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 D5EB66B007B for ; Thu, 17 Oct 2024 14:01:12 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 70488C152F for ; Thu, 17 Oct 2024 18:01:00 +0000 (UTC) X-FDA: 82683860658.28.B588FF9 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by imf11.hostedemail.com (Postfix) with ESMTP id 897104001E for ; Thu, 17 Oct 2024 18:00:58 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=qC75Tk6K; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf11.hostedemail.com: domain of jannh@google.com designates 209.85.167.47 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729188036; a=rsa-sha256; cv=none; b=tlOmuOPETrv1u84JENxoHDlCkBDhtVjJKYsnHcJ9uKAi6XGdHUmPcqL70cFXuA7qr1YQnP Sdr6MdWzuYvopPdceDdLUWaDq3UZFRLcW22vsiUlmMV/a7yjTsYkn5wSbvpCbNw28HIbSE eRzU0qjyIR5LUz4tIqjG1EzMptI5kZ0= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=qC75Tk6K; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf11.hostedemail.com: domain of jannh@google.com designates 209.85.167.47 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729188036; 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=3tq6vRXTn8lHPzINpeLq9DaDFBi1VKCSNHgf2UHYSZs=; b=zqGE1GCr7R28N+/928wyWJJaNyId+mo+AwQeUPD5HzjK75DbRVNkSnzbD+3IlHZt60e8FU bayUKf9OP8pu1daS4Lilx0dMqzrLbOk8S6ljCng97AOTsuNzsGzdKDWULO0v7hpiOKlul1 u7fGYB9uxg5jzrtXrC5CY+JJMnwu2kU= Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-539e66ba398so2878e87.0 for ; Thu, 17 Oct 2024 11:01:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1729188069; x=1729792869; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=3tq6vRXTn8lHPzINpeLq9DaDFBi1VKCSNHgf2UHYSZs=; b=qC75Tk6Kx5vvq1saUkbdsJCVetiDgqNWrt6grTfc8U+8wG4JMjAjjlVvxzcVhAKgiU 6R9T27PGd7eVC2Ec/ZG29jtI+MsuN1LFjxZ3SIk/wl+VChWygp96V+R4s5iUvlv9sWA7 TOOGcVhWBOCgoBmkTyXg/vgJCdQBW/YYUnOYERXWz3pIeYPcLQgLURD4hCLhTglzufBe 4M7qgelfsdOHoZaYN697wvduY2ytwdw6fcxBTaCJwKWYfDiSDrYOgtNFtjPNiSTUmJO2 /yI5hIBOGislEHTqwdh0zw+2uBNUAyjzvcgL3posRqRRNvAuqMxXnhs6sCin2xkr+J7w OAcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729188069; x=1729792869; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3tq6vRXTn8lHPzINpeLq9DaDFBi1VKCSNHgf2UHYSZs=; b=s6k04AkRjvB4oQRNCO7nObugBZtFYiFL2MRRsCjxGdubSV4otocl0U4iahd6k+cQHs UFsbYma1ven+R4tLXJyjo5iMgyzrrNPuN7K6/ATWiR8azuY91Jr2zbVVomkU1pY04zv8 ohKq6+Nwl6LoBlvljeOralWK9CgzVFmJYoYgucFTsK15cWdkQmGd2+KQe+TKx86A4ghy oh2ST4WJBs37IvQvB6lwWQEVWcWPKwOoRJmeBCnQk6+t0/0P0FUifKFMdwsJcjmFXZYj NuhaydlKJs7BwVRpw7scX/d/wXgkltTkQBdKLdH5z2PCyrajvZQ/gOhLsAVpkDBuoNYg EDvw== X-Forwarded-Encrypted: i=1; AJvYcCWJvaq38QV43YmzqnyR0F64MStSEHmWDSTKqv6+3kFkaqROb3vEMHKQBihYGKbdIvXX5EJnNe+JYw==@kvack.org X-Gm-Message-State: AOJu0Yycq53SRh2a2kKau562M9B18wkz8NrwRFThGopObTo7lS6HbDTN 1p5NxFjleOix/kxHTPdMWqMkifYe5wWcg++QSFI8iJjm6GiXjuIGOEWFo64SVry0RfT26OvEsEn FkSCokIWpVSBWfEuGgE6WXeDy6Oxe0RHfKfMv X-Google-Smtp-Source: AGHT+IEs6lSI75tBkXW86ko6TEAGAckc/7GMFDqnAaeh6EW29o6PIKm0pr/qnKjOhqWrVCfS12Qhn6wWkiGlQ7tzLzw= X-Received: by 2002:a05:6512:282b:b0:535:3d14:1313 with SMTP id 2adb3069b0e04-53a14c82458mr12933e87.0.1729188068150; Thu, 17 Oct 2024 11:01:08 -0700 (PDT) MIME-Version: 1.0 References: <258de4356bdcc01bce0ff1f6c29b2b64a4211494.1729157502.git.zhengqi.arch@bytedance.com> In-Reply-To: <258de4356bdcc01bce0ff1f6c29b2b64a4211494.1729157502.git.zhengqi.arch@bytedance.com> From: Jann Horn Date: Thu, 17 Oct 2024 20:00:32 +0200 Message-ID: Subject: Re: [PATCH v1 1/7] mm: khugepaged: retract_page_tables() use pte_offset_map_lock() To: Qi Zheng 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: aiqgz8ui7oa6intbxyw4wpk69zjiqizh X-Rspamd-Queue-Id: 897104001E X-Rspamd-Server: rspam02 X-HE-Tag: 1729188058-409681 X-HE-Meta: U2FsdGVkX1+Nd8RbxeerMMT3WiG1hzuFCC0JCwn9t1kwxAWTpAbg69FAlq/9mD1KCpsXXtfRq+TkN7/cVPcYlJ3ET0bFUVy7QSG2olNHA1/nLrvCeAHQoi8E1ddOkZTARXzNFQFJ9FLgPE5P1hK3g3aK9syuRjex7YozEbFbZZpkPgRUmGbHheRUsbcHJAjsX03Ztgc6QehjnaAZm5uElWhVtGM03537AYc3/RM769UMfSYtxAqbaqKxvvgZe/kAmEOTPFJLJU7aaZi1M+JEWwYfZY6BD8NDyK1F51i5cfp17jylCTz3SCtpgc6L1OeqLcl++aIEr4TH29frV84HmTTdzIVBetvJigB3y96fLwUwp7qCRBtqg7Q/R5BnZrFcge1Cch5C7kiM5MDCsoK5klg6uRGi20Mfu8mYqPviOcopbN4iSaE4x2VPj4yO2HoC/nyREbmC6SxeMz7JgirbKAgLU4f4/BGxcKG7rXZGhb448UezsYZGkysUHOQymfaaoXt8DSa8nfPjPVMwKb6xLC5TOr4efduvd1a7OYh2BWWCXdyX0lVYoDm6ftMQc/pYmkAxJm53oDTG0TLF/vR8Mpj6sY8bZZ0BK6kzaT3q+DWx3h4+EuQC8pi3/XH8sP1N6+In3l+7Q3I53n/+8nbgWxo7asCPriNZW4kYc2MaYo1HFDxP9/eTNhVTNRNna4ehn3SzCjYeFbwz0ijuGjbkaiGtuMfbeZd/Dvo0B/l233AeiRcOZeNOOthYbkA9noQ7ltn3oFavorvS2oUHspOoQJ1mQZbt+twCW6CyKrA426G39Wt7EKcTI3Za2xB11GyW1nNr+HIbUwcuJfFC5lUS99av52ONXoKROgvOhjTuodFzR4m9X7gYaaFm/IEtmfyY1dTYxxvnI0Nsu1SYFTljAwkKtEah2NjMyl+ny2yUQDhcFPO/UiK76Lw6LrLhXYDTi1V0Y3smU3+029rwXLb XJZqJdcP LCcZUBPtxjmkLsY6xVF6qQKRS5CVeca9lxjWf6r6HTxNoGVRipARcZ+X9AlwWnwrWE1Q2aubrquQtzpRhOo35+xrOb4xLZtdI8fI2cKas0KCdpFtezBPQqihOsU/VCPFqfUw2R41BCvrL4cTngDgpK+a6mK8/4u/I+ffoWyOcj4xipAu1kugUoFYZpg0EleaMUeeZ7OfHmorIp42mKov9IcNrCRVzJGcxTJvyO00VSgcW+d2Rr78uoqFSCZm5cz/Ahc+sYEUWkbUqRco= 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 Thu, Oct 17, 2024 at 11:47=E2=80=AFAM 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_spac= e *mapping, pgoff_t pgoff) > spinlock_t *pml; > spinlock_t *ptl; > bool skipped_uffd =3D false; > + pte_t *pte; > > /* > * Check vma->anon_vma to exclude MAP_PRIVATE mappings th= at > @@ -1757,9 +1758,15 @@ static void retract_page_tables(struct address_spa= ce *mapping, pgoff_t pgoff) > mmu_notifier_invalidate_range_start(&range); > > pml =3D pmd_lock(mm, pmd); > - ptl =3D pte_lockptr(mm, pmd); > + pte =3D 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 !=3D pml) > spin_lock_nested(ptl, SINGLE_DEPTH_NESTING); ... and this takes the same lock again, right? I think this will deadlock on kernels with CONFIG_SPLIT_PTE_PTLOCKS=3Dy. Did you test this on a machine with less than 4 CPU cores, or something like that? Or am I missing something?