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 EE127C2D0CD for ; Wed, 21 May 2025 15:11:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 418166B0083; Wed, 21 May 2025 11:11:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F0586B0089; Wed, 21 May 2025 11:11:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3065C6B008A; Wed, 21 May 2025 11:11:06 -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 17D3A6B0083 for ; Wed, 21 May 2025 11:11:06 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B3E86C0907 for ; Wed, 21 May 2025 15:11:05 +0000 (UTC) X-FDA: 83467252890.02.6090E94 Received: from mail-ot1-f41.google.com (mail-ot1-f41.google.com [209.85.210.41]) by imf19.hostedemail.com (Postfix) with ESMTP id DBA4C1A000E for ; Wed, 21 May 2025 15:11:03 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=1lLlzRAr; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf19.hostedemail.com: domain of hughd@google.com designates 209.85.210.41 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=1747840263; 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=q9i49PuCqE8syzOpxQq46ilt6U5tDrx4U1lPzUK5JhQ=; b=UMeKpawPVeaoqwnix76KdGtwNwPmJzbQfMa382Vr2DYTvg7SqcXDSRBS+uTff1vTwIMsFP 3bxUyw59eD/NarzVzZt6OASlHNsJRK497pIDdu30xZcw5ARPj3YCH4++6rMuu/SL464CNq gajK1dZhQxVtWDg+ozTcgXEsSuoHPLg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747840263; a=rsa-sha256; cv=none; b=HL8tsKklQMIEf+QeBBSC6wfZC4BRfP/K7pr7aqxNpQ9gLfVxaGnVZkLV7ihOPCfVBiVKfu Z3QOVxenE/9tU/vTTpNj6wOX4VmeXYlkFms0M4tiqY+s07i8EZEEtiA+vaBu6djU7wbP8g iwCMxmgR8C7pM/XzqZhvYIROhXWFgEw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=1lLlzRAr; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf19.hostedemail.com: domain of hughd@google.com designates 209.85.210.41 as permitted sender) smtp.mailfrom=hughd@google.com Received: by mail-ot1-f41.google.com with SMTP id 46e09a7af769-72ecb4d9a10so7636691a34.3 for ; Wed, 21 May 2025 08:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747840263; x=1748445063; darn=kvack.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=q9i49PuCqE8syzOpxQq46ilt6U5tDrx4U1lPzUK5JhQ=; b=1lLlzRArhLOK5nYI8URVm72JzVCIla2VEXNTYK3w6Ni309Trm54okDSuyqzEoZD1E+ qnPHCUzwEyFoutieTQJkcB8f4TIbsnY5AZyVAoztVozV+LHGH1J9LKqVvrnDYjuDpGjH xWTpmjNZN7J73+mNbNOi9CeH63ksRrfexbiWO9WbxlbtFmY7JxcJFCs2dUol5VqaXMrr PVaJmkSFonSH2na6xuW/A8EvrMOaahTV9tGjQJrFv5kPBATgaTmnYoEST4agqyfGlwnQ ojkRsQZUl0wCm4WpsEcVo1kbRnNUzLTlrgFf662yohgaZXxfe6h/yqSqz2r1e0LOnMyc KgxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747840263; x=1748445063; 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=q9i49PuCqE8syzOpxQq46ilt6U5tDrx4U1lPzUK5JhQ=; b=N5nuHcoPnKxx+L5zGVmijoyFPe4fO+ngtAZ37cXg71yyEuTCex7kulxXVrXJ3dWeFL ibySTc4JRYsZwRLxjfv0eFfm1VZ5A90DbP6pBNS8v4hvRNU80kKGsFAKo1Eqw5v9vS5Q LD4PWJDEMk7NDq2GeHTNWerigLkc+3JGHyPijsICIDd5P4wDdUdg7UHaSL+S+w8DDcwX tSftQdhFs0QnielQHLuiPqmVY/IX/8KYRJPIyY4FFnc2APvwnGgVmrD0fE1PDrYPamdI 9pAgmsSkxsZnLpYTrili7QaeGztkwXScka0I89mxyce5FlfhXyudeYpCETtK0RtB8Xtm Xwxg== X-Gm-Message-State: AOJu0YxiJte4+tMIIdQ0yU/fR5j1F/urIp50naDTJvwtMfCKP6sO4pVt 7vwoS3q6Ud+kfWR28sAUo7N23eE3u/wskEtHvfHUUMwesHA6ZrvwLpR3Y+qV8B4+qg== X-Gm-Gg: ASbGncs7sL0AgvcOgeMFT20goNWsfgHY/O/8i/lC2d/5f7NeyGtPouVpTxTu+ZCK+sT NKaJ9H50mS6JbZNEoRkDycfWqfRdauNKx6PMy45blOSMxTuguPyyc4UMW0fzQX/EmqCrsT5d5j1 v3Wh/9iHPLCD+zfeR8ri697tGmHbDKOL9HVFO6J7pBEI0Gppfo3UGTSo0ag1fbqUS6McRs5RO5r /AMZ4MN6cSbZygJeDGAd8aYXtkbY1d9emfUIJyq4OijO3Tu75yjqSqklPEYZUVm97BzOFvodnwn Eyc556kia+D4KNq6t7WK7FY0DAMuK7BA78qEAZGSWq235+sSZG7W/7fnkDycxZFWkHABIuNFI48 Hu3SQ+de4y5noX5L/KbaedmNUN1gTuuTtK7smaWXPHOHFRQ== X-Google-Smtp-Source: AGHT+IFd0X9cejNLaHAapyuvMyXDy1BdBiZcRkj1K61S3pTev9a+43FMuQ1GnPCmniq9Zk65ksWmaw== X-Received: by 2002:a05:6830:6404:b0:72a:d54:a780 with SMTP id 46e09a7af769-734f6b61b16mr14246398a34.17.1747840262558; Wed, 21 May 2025 08:11:02 -0700 (PDT) Received: from darker.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-734f6b60081sm2158746a34.56.2025.05.21.08.11.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 May 2025 08:11:01 -0700 (PDT) Date: Wed, 21 May 2025 08:10:46 -0700 (PDT) From: Hugh Dickins To: Gavin Guo cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, muchun.song@linux.dev, osalvador@suse.de, akpm@linux-foundation.org, mike.kravetz@oracle.com, kernel-dev@igalia.com, stable@vger.kernel.org, Hugh Dickins , Florent Revest , Gavin Shan Subject: Re: [PATCH v2] mm/hugetlb: fix a deadlock with pagecache_folio and hugetlb_fault_mutex_table In-Reply-To: <20250521115727.2202284-1-gavinguo@igalia.com> Message-ID: <30681817-6820-6b43-1f39-065c5f1b3596@google.com> References: <20250521115727.2202284-1-gavinguo@igalia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Stat-Signature: gy135auq9bb4yyyph73sj9mtq4b7zp93 X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DBA4C1A000E X-HE-Tag: 1747840263-465261 X-HE-Meta: U2FsdGVkX1/Q4uH7uKn86FyOnswWnvArV2akM7KloZBoJBLZ7W4LiIu2ODODZcSdCDSrpoinxfg1m1AJhbCoSICFoCOG9N9+jA3o2sp5P17dB6R5vus5tif8Z1DSyFnCp7Zal3rqzjiTktyqz+9KSOqB7O44xtIoxDdq/drwCeF+5PMs1ethQfpvU+Ct6+I4VVR7ZwxZbaziHNcu2D+hYR2PFNZ89+TRRd2bXvyzoNgoM1JH/rzpztsUCNiOY4q+MysjEQWohI5Wxx5KYHToTHAO5zJVFrCT5ixKY18oJbPPr5I1g4+0Mvqaf1f4zNDDOoFXAXA0QMi7R4bzbrrkTzLsZ3YcIwqXy46YhHq9yp6IwGT4snOOTFhdhEoIkkALBIfLkLzTn4yiM9KvP+YL/eJAH2wYx+1gX8UO1EWAdaiK4JjHEmOEPrUNwdSZHcOQUdHEyx8XRgIoVLfYDhtXQ6WQbUqT8FzvXfEhf+DbjkzAk4HSGuDvE1efBc/2KYBbwAYD0wn/RU8ozq5opwO06vjQru5OuYtrtRPYo+VE782BUdSuN0syQtFkmiTpJUi5h4aX0ln5ToEdIIdURG4Wa6QHLYLgI4IIwFxhVvkMcoG5NdfNoDLlxGSXTAhOuauCI49phkJtpSIFktdMhUn/m8k5f9efhgB0xmbYE3Dz6RwD+I4CeI768QrA8+ngHF9PZ5U3H7Fi3KoE2ONuL6ylhbp93dzXgzo+9x3LddRlvaJQ2q7mTZMV719hma5NbTmhimFswD3eucokf0UM0BqwA6NPDcHWgpIPOD9B+C+ZI3IpFZxGd1QNBtAvrnphHYG3dyVOA3PC02Yi/tAdsYGEOoBerhcya0Amr9qtM7AFligxe96OTF1sSULeIcsChfhCdoCDAwc57Aoo1pcR9lSvRgJ/9WOQvVvMx1j6tCyopsZ367EtLLPITiMS2lziQZut6dWOY9/IxfHQZA0BkLR r4SE6meW yyvVbggrdNNaMfaoJ6iSPJ2a8aBXTvxtjiNvrJ8eHHQnXoWgGfivJc2t30JJ4aWpjHHX7t4fV+AxL+CNkcQp2lD8dVNvTpH+EN7oT0EYjs+btogNgnT1IEbhYDYHLD5bDZlMQyO2/0Lm5SfaEPRCud2Idoc7JqA2wwF+29Ncs58vWDIZaaRUVo0pFot/5YnjWg1iUSzuGH66tk0bjNHgdOOxtOuoeGhONt8qaHpImJ+IVlpUy2DRRN83ETnzPZ4k/Uqe0bOt12Vabw5JHt3K2X6l/dWlndwai+RC3PHt/+w4B8YC1zD1mfe6BILez08bC6ab2lqNh7F8nmZ/Q9XVCLzRyEQuJAVO1PG+QVNcfizqnLu4GVDJjb+fYEeU89mtmFXgnXWX90xTmXUNyfVFxoULT8CyQwjvWXhvr 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 Wed, 21 May 2025, Gavin Guo wrote: >... > V1 -> V2 > Suggested-by Oscar Salvador: > - Use folio_test_locked to replace the unnecessary parameter passing. > > mm/hugetlb.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 7ae38bfb9096..ed501f134eff 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -6226,6 +6226,12 @@ static vm_fault_t hugetlb_wp(struct folio *pagecache_folio, > u32 hash; > > folio_put(old_folio); > + /* > + * The pagecache_folio needs to be unlocked to avoid > + * deadlock when the child unmaps the folio. > + */ > + if (pagecache_folio) > + folio_unlock(pagecache_folio); > /* > * Drop hugetlb_fault_mutex and vma_lock before > * unmapping. unmapping needs to hold vma_lock > @@ -6823,8 +6829,13 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, > out_ptl: > spin_unlock(vmf.ptl); > > + /* > + * hugetlb_wp() might have already unlocked pagecache_folio, so > + * skip it if that is the case. > + */ > if (pagecache_folio) { > - folio_unlock(pagecache_folio); > + if (folio_test_locked(pagecache_folio)) > + folio_unlock(pagecache_folio); > folio_put(pagecache_folio); > } > out_mutex: NAK! I have not (and shall not) review V1, but was hoping someone else would save me from rejecting this V2 idea immediately. Unless you have a very strong argument why this folio is invisible to the rest of the world, including speculative accessors like compaction (and the name "pagecache_folio" suggests very much the reverse): the pattern of unlocking a lock when you see it locked is like (or worse than) having no locking at all - it is potentially unlocking someone else's lock. Hugh