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 CDAECC87FC5 for ; Mon, 21 Jul 2025 09:35:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5AC3B6B0093; Mon, 21 Jul 2025 05:35:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5835D6B0095; Mon, 21 Jul 2025 05:35:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 498B46B0096; Mon, 21 Jul 2025 05:35:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 362EE6B0093 for ; Mon, 21 Jul 2025 05:35:27 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E5CFC1606AA for ; Mon, 21 Jul 2025 09:35:26 +0000 (UTC) X-FDA: 83687763852.07.68CD2CA Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by imf11.hostedemail.com (Postfix) with ESMTP id E36FA40013 for ; Mon, 21 Jul 2025 09:35:24 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b="Bp8P/Ise"; spf=pass (imf11.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.41 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1753090525; 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=Y+PdCvpnkCbqGhTql+3eHO72ExH2e++sBtGL273S0AU=; b=A6+DkWo1G/x6YLFialmZoE3dU9MNKko5G3ilHsp4Kzbtc4HeVOWnnFw416NyTJtPfwMAi1 qeTmcHyprJ3Z3HjU27qz5bbZEA8BdzH2s+TqqZI9A2SbDBpGSIdId8k5z/F/3CPD0k168z jaUqZeksDFL9/AwN2pf9GC4UU6gc8PU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1753090525; a=rsa-sha256; cv=none; b=S9aKPzFr//XwCTCyCJvF3Kg+qwc3U0rgJZktZGWc/5DkNCZmTZveNxM+vNd6D1dpMGefIo 6IVVp9YjmmiDmA1rO7O9QW2Bz/afdLouMjO3HJ/UtZWgnI5t+N/2X7ccr93Ql0Y4ZImav6 xR1QsC29cZuZLiGHWcseEnEtzmMa6Q4= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b="Bp8P/Ise"; spf=pass (imf11.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.41 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-455fdfb5d04so22731995e9.2 for ; Mon, 21 Jul 2025 02:35:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1753090523; x=1753695323; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Y+PdCvpnkCbqGhTql+3eHO72ExH2e++sBtGL273S0AU=; b=Bp8P/IseL/fBzSJn4pzkzxa2ocinJpxEFWjJEomZzOKZhxsmT4YFKyRsg2dRDGhiKT 78Kp4TQ24wuIlwkea2XUTgG8lIrp1K4PFluJ1e7aXaaEQeDsq5l20jBh6hCWh4KKl/ZT naXSl+/Eno2cR4s+nMpIKMf8lCxAM3N5aj8QPKJXkuoPJtE/JQ7xMn3ZUFo2e9YFEg7q 6ENPV5gqQiC0sNH9fwPhT8N/qIufaBQsjvmLMGvVewffsaYML06vbFBZxROOWTR9uNIe Nk5lH427WJCiufhpxXrwNbg7OCPsORcdOXyuyDPNLCkPUwfJZzJzm5fQi+8lK9LalPnO owLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753090523; x=1753695323; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Y+PdCvpnkCbqGhTql+3eHO72ExH2e++sBtGL273S0AU=; b=tK3rK2E7oNu0491P1iJXyU7vEsfqQUBt7H6b8/ZtuvFzXqoFd3zaNvtKx3+XBTTVBM f5s4ts/7FLT113KXqjcaeGLLre82WnonghXwEVIveBpgjeunheUcl9unpJBaTDfOIYVB igsNV4dZrutgkWSdaBfv/K83xVWsNBL+aSs7R0rgW6kp+4bGGDZTY5DB1HeZHeXwkRk4 jcETkTLpTxGEhEsJv14FOEmWHhZXeeF4cQNSCKfLsum8y9aVXJRY337NkVQ1y1KXqmJQ 1WPf/488poZi3umrXbCAhb47tnE/oauSbuiZnXoKMB6XNkForDZROYZFKt7uk8vo2pWd Vzug== X-Forwarded-Encrypted: i=1; AJvYcCVxyXJET8ew5xGOStOb1q3ByMqx/8DK2UEctP8S1MlPJKgBm6pNZr0xbfqT8kA+hLc5e0Ei5QOnYQ==@kvack.org X-Gm-Message-State: AOJu0YxBrn9tvOGH3+JuOaIEEdnyleqAC7GLyLdfj6DxxoCvb0IXEMfK orH31dVpscxbus3+AV1yERc5HHhflwxKOBtbtpXGRYXvCLFhrch4HB/v5QTFAislVeQ= X-Gm-Gg: ASbGncvnTAsa4JGT2vmSrW8fESSEjomOW1L/NthgMxNpz9G5jH53+Bv9EPlZRO6yD0+ YZ4RzW909QFYcpZdcc6hi3lGRc4sZRldYCJNzzWTNQ5UnU2cRwPe8X1oMsWvDxdWUKA3ZMfjiUK YKVIvDZ6MMjhjXbC+HQEOfcFpIOrymcCaJeMQjr59GU0MG6jasxqBAvARi+/iG5cOTsGmTxf+6n n6goLXLKY37ESPtZlsgp9PXOVJFJvLmDR8HhYeCa+t7yWgs/25XXLz2dGritGSCHgppnwFRKKZU 9x5r9jBHXBuuJfHykbYRTVHx4UUbhum5nyca9s8V7FXFAUNtr6IlR/gFT2laaTOvV6aATEjKq60 Et7dIHq19dv3otHXCFSibeaEMFP9+Jw== X-Google-Smtp-Source: AGHT+IFusNs8dEmJ3frn8SBqw/seQLoAYSwV4j5TaN95T3OqX43612spGsMsPvWxaNmSjgo3i7MTUQ== X-Received: by 2002:a05:6000:460a:b0:3b5:dc04:3f59 with SMTP id ffacd0b85a97d-3b613e97badmr10887650f8f.37.1753090523176; Mon, 21 Jul 2025 02:35:23 -0700 (PDT) Received: from localhost (nat2.prg.suse.com. [195.250.132.146]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3b61ca2ba0asm9814450f8f.21.2025.07.21.02.35.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jul 2025 02:35:22 -0700 (PDT) Date: Mon, 21 Jul 2025 11:35:22 +0200 From: Michal Hocko To: David Hildenbrand Cc: Jinjiang Tu , akpm@linux-foundation.org, catalin.marinas@arm.com, lorenzo.stoakes@oracle.com, thiago.bauermann@linaro.org, superman.xpt@gmail.com, christophe.leroy@csgroup.eu, brahmajit.xyz@gmail.com, andrii@kernel.org, avagin@gmail.com, baolin.wang@linux.alibaba.com, ryan.roberts@arm.com, hughd@google.com, rientjes@google.com, joern@logfs.org, linux-mm@kvack.org, wangkefeng.wang@huawei.com Subject: Re: [PATCH] smaps: fix BUG_ON in smaps_hugetlb_range Message-ID: References: <20250721081444.277183-1-tujinjiang@huawei.com> <46a22e7c-51f0-4fd0-8583-447c5e366029@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <46a22e7c-51f0-4fd0-8583-447c5e366029@redhat.com> X-Rspamd-Queue-Id: E36FA40013 X-Rspam-User: X-Rspamd-Server: rspam09 X-Stat-Signature: zqih3sy9hqs3643f5taasfptxxqq9egb X-HE-Tag: 1753090524-344938 X-HE-Meta: U2FsdGVkX1/T8yeli75a19qYpUwuAU1F/VFBypfPdasRspzwLz6FsGBXZRBr9BlXTHM/xvqVMM6Ai3VL12q8zrFbv6MJMiO0HoQEjDZrwIZuIdae74ELhV+AJPuVvoBkpH0Z0+wh3DAnx9iA04iYBYuPN+PGQdSGIpf2V7WcWVR/0bJEebIct3XhGpSj5ReMjUBPclv9IaXXNhCPbdLIvVvevqwwY/zWxoxn6B7/iRxUlocToHeMuKG/RrIKom2iOo+qNLNbmF6AUHPfYY3zy/QnjLT0xjQRTU+cEhUhKBHYFqYCHKQ3tWdjgMLhvJ0Is96Sxo38NQ2vZpET4PJ00e/AmyjlQ0nk/7KU2kO8USCIxYgLJkwD7UW1ddCJ5cLn/PyLYYLR9YM6izQzi4hLoZmX+coEqVaMzcQBUkzumNSWV2tU9hUV1V7K6Wdt+TLceJgpIYe9zKTMhnf9vi+ctBgeAuKoeh76hUUq/pjxMvjVJV6aMFNrxj/6jFT7OqCsqAUF5lMgYf9CZUdcqQhzkZimXF/HdEdS9UTsVm4Hw2iIQLVohZ5h0ZdQZ9FrxJAK7fUrSl6p04mSpJk+ZHSfq7ndYZ0RHI1u4r7VvUK5d4+IF3+DGHqvDzgpMFhGXdloTyyD53IlwPjmgRhqiSLbvJJE/2m0WMrxbvMD1RLH7A43cbRJLgtHARcj1UBSSV+fPj3A4qOUQ9Ng/G+30pouUvp4RubR35UmUhmvBPU9DXeonCBsWeMCDLVETJecgdFcsZMVk5piGcMeYGwAN2MIFBT6yzwymENSvobbrq5Ug1bAp/TkR11zLiCpgVh/GVRA0v0d9119QrazvbAs+J3Dvpa4DV6ID/grl5D4lBd5YmmANb56D7IKhmZX2vQa/wpy3aq4QaiMoGzm+Elt3F2K7mfhEIm9uZPfcnr1Rg4+8WtM5q/S37j2j66pBVnpzc5PRaRSyX+FrCDQhmyZ79R LQS/7Ejp JdiNoyubgFazmxnlANAPtpszuU9IHiR49Ych13VzIf+wycibItw/Fm/da6C1esiEll6CJybiKJi9eWr4BALCItqXAY1MT3tm+GGeeOQRm6Xjsp3lC8PwGNm5virNopsLxGhvcR+W4pgqBc0Mv6OfK9QQdSBX8MYURyB7sb3pgHMCzHZ6FLVYT6ePqW1QUc0tj2GejfzfT002QjRQu7l202hrQW3O/z3ECi8wzzpdV98kx08306ibGwXMfqiiaNa5/u7JMD9nyq9XRxbj8Zn+6pka2ZfGNnnXuzO+7fieP+ziSgUs+qdnfzzh6pugjqi/j6hvo8AwNoStfB046svuNsHHO4xE1EnMn4IliPF87x1xJYH+sLPOLTYwgQPVRQU+saNiaw3wkgmZeemHDcVxxsD6g1mRdlArE3u2MSpzwjd4dFSxEmd+ncJteF60kTZCYmgxgQaBuNYO67ME= 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 Mon 21-07-25 11:29:52, David Hildenbrand wrote: > On 21.07.25 10:14, Jinjiang Tu wrote: > > smaps_hugetlb_range() handles the pte without holdling ptl, and may be > > concurrenct with migration, leaing to BUG_ON in pfn_swap_entry_to_page(). > > The race is as follows. > > > > smaps_hugetlb_range migrate_pages > > huge_ptep_get > > remove_migration_ptes > > folio_unlock > > pfn_swap_entry_folio > > BUG_ON > > > > To fix it, hold ptl lock in smaps_hugetlb_range(). > > > > Fixes: 25ee01a2fca0 ("mm: hugetlb: proc: add hugetlb-related fields to /proc/PID/smaps") > > Signed-off-by: Jinjiang Tu > > --- > > fs/proc/task_mmu.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > > index 751479eb128f..0102ab3aaec1 100644 > > --- a/fs/proc/task_mmu.c > > +++ b/fs/proc/task_mmu.c > > @@ -1020,10 +1020,13 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask, > > { > > struct mem_size_stats *mss = walk->private; > > struct vm_area_struct *vma = walk->vma; > > - pte_t ptent = huge_ptep_get(walk->mm, addr, pte); > > struct folio *folio = NULL; > > bool present = false; > > + spinlock_t *ptl; > > + pte_t ptent; > > + ptl = huge_pte_lock(hstate_vma(vma), walk->mm, pte); > > + ptent = huge_ptep_get(walk->mm, addr, pte); > > if (pte_present(ptent)) { > > folio = page_folio(pte_page(ptent)); > > present = true; > > @@ -1042,6 +1045,7 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask, > > else > > mss->private_hugetlb += huge_page_size(hstate_vma(vma)); > > } > > + spin_unlock(ptl); > > return 0; > > } > > #else > > > Heh, I stumbled over that code many times and wondered "why don't we need > the PTL here -- I'm sure it's fine because otherwise we would be getting > reports.". > > In pagewalk code we only hold the vma lock -- see walk_hugetlb_range(). > > So I think we should just grab the PTL in all these walkers. I believe the reason that we try to avoid taking the lock in these paths is that they are userspace accessible and we do not want to expose them to users. I think it would be good to try to rework the code to not require the lock even if we get imprecise numbers. We cannot trigger any oops of course and that is a clear bug here. Can we achieve the fix without taking the lock? -- Michal Hocko SUSE Labs