From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E39EE287508; Wed, 7 May 2025 13:06:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623215; cv=none; b=dFkuJhTm+ItvEQ+vJlerw+wRdiw32wjidWGoNJe6A0O99oPi8g7Mj8L4sBI/IG5esIA89tkxWK22vDsT5PwmXLwderdx1NlgUxQnHUFKrTbUsJyclAWPg/d8wEzuPjdQFvwltvfXcrWWjvilTBbAY/W+a5Bor7e5dWhCR6Covmk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623215; c=relaxed/simple; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=riWaSpF9mbLgMxJdf87CeS2yQxDUUe/8tV+r8FxOtgRWFchUDGsYhmnJpXxpfOqdNHSNrxAGOD1tEsOUGSJvpPn4i0rYH5wBtUYzFzZth9C6lvZAbGW+AbAy185x1gBIKdbOt9MbuYWIP48/5RRfZrlWQU+noDdG/rDllaEXeW4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WjkJXqpV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WjkJXqpV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 846CFC4CEF0; Wed, 7 May 2025 13:06:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623214; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WjkJXqpVGOlEPr0StF2TAok86cYc7cvffLPF3SqVtniYzXD7CK/i0+JQWuFhHJLY7 nIL3jiKPlS2tOez3QzJnYq092LjvuS3Kv3D4m87fptFqr6nOGTpRHjn73+JruMqAv8 27Kd2WFurR1bZvTXXnjRjOuPZ1GojElzmykunzQNx+c6wDXZu9SkFnInq2Ri9m80oJ oUSWtvd3X0vDy4Td01I6tF7u5tLirC/lz9OhqcisZ7F1SokcWwuyWuftpsI2AaGjcU Ih2Ae+rIeHkb6yEqX7bGrqnh57Qu5aA6RrX4FDoYsUBiLRKEqi1qS6LBuNtPDm3/ry T8EHjIVAZqUZA== From: Jeff Layton Date: Wed, 07 May 2025 09:06:26 -0400 Subject: [PATCH v8 01/10] ref_tracker: don't use %pK in pr_ostream() output Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-1-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1830; i=jlayton@kernel.org; h=from:subject:message-id; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rozw8pIJYImQtLJhggMZ2BUDCVWRQcpww4D rddOwY3n1SJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6AAKCRAADmhBGVaC FcS+EADIeZPW4Y0bU21Lb2jOiKoU/j1AtJYYQn77DCI0VR0VDWhQlo2Q2yPebSBx7PqvxRu0usr 4kS4EUpK39qc9hQjYbk9VHJ8VdAiVe+MvKzNHYihYRm7ni2SsDccAqD4SEnnb6SEjfZMcPYilbi HJs1Gl5Z6j9idVeNP8sYyab8IIur9ENFy0yLXA5+lKpGduo+dt+LbODJXSu0/6PzK2sC/2bEwSa +W/x2bDWj9xK1qOVrtDIAV4U8YlxTnI86dUTPC23crFx1bV6CfRb4gFmldmPS0wjmuSLJL91soe Mmu/P87O8gWpJEVEPqaBUF7ySbSDMLeuarsFlMQ1vrLp3KI2ipaa52bSVRLESjr8WrNdk4v1nFO eluzeZgCkvZErjSrCtItZle4XVH9w1APBGd04rmalwvONLXkTKRK9puCSALv1mWrr8h64EwdCvY B3ry52gdYMis1RX0XWgiLHWocC1K1xWWI1giHBEDH2WOPSHZ3cE8cMmC+IvEBbKzj6Bv2M/8AXE 2jz3Euu5EsF/ICwT9uCFudPAo3y3VSBsud7u6D0ekyUVyDUDTPr/+s2zkysrZLYY2/XBhLB+9wI GEPF1RJgGf4ejAlQ89JJS+T6zZrGiHFNaqLu4kJc00PUgKQx7GM6AshTrl1KDt5V2ai3q7mFQxZ 1AuBtbRKX7NerPA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 As Thomas Wei=C3=9Fschuh points out [1], it is now preferable to use %p instead of hashed pointers with printk(), since raw pointers should no longer be leaked into the kernel log. Change the ref_tracker infrastructure to use %p instead of %pK in its formats. [1]: https://lore.kernel.org/netdev/20250414-restricted-pointers-net-v1-0-1= 2af0ce46cdd@linutronix.de/ Cc: Thomas Wei=C3=9Fschuh Reviewed-by: Thomas Wei=C3=9Fschuh Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index cf5609b1ca79361763abe5a3a98484a3ee591ff2..de71439e12a3bab6456910986fa= 611dfbdd97980 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -96,7 +96,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, =20 stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { - pr_ostream(s, "%s@%pK: couldn't get stats, error %pe\n", + pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n", dir->name, dir, stats); return; } @@ -107,13 +107,13 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, stack =3D stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; - pr_ostream(s, "%s@%pK has %d/%d users at\n%s\n", dir->name, dir, + pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir, stats->stacks[i].count, stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) - pr_ostream(s, "%s@%pK skipped reports about %d/%d users.\n", + pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n", dir->name, dir, skipped, stats->total); =20 kfree(sbuf); --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDFDF288C31; Wed, 7 May 2025 13:06:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623217; cv=none; b=EclJxU8Pqb4QCghsbELips58mpF8BcLrDTLVVA1VUz5nfUJ1Q8ap0+D7z3IB2PjBs7uEgfqnZvAka4gv4GWr/WsRRx8843T2tpOl+CevlMNj8S0UwwEQqLSAXV3OWRI7K8tPNfiBNy3JikEVX1c/3v7wgVoabg/wXjna1ybhkGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623217; c=relaxed/simple; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cecKyYe0UEp7XLdWR0CiNGGTWuNO+cLzI55WB71SCUhLX4ssfNRs4eL+DumJs+ZFcWITYf/IPuJ9pmxDKub1SRj4Ddz0/oitvpkCsNR2fxjR5ZTYLUFCCq0cx31QuGM2IMMOTvecgGS8wOKoCUxpS8YvQHk1w28Bt7iW4aAqimw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F/Avoz3N; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F/Avoz3N" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97971C4CEF2; Wed, 7 May 2025 13:06:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623216; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F/Avoz3NIXBLZbU9X+i5TfX9Glx+eMsbX8LLPBgpjxWWCRyiOSTPr6lVo03SM7Pqm 4ygmaykhSVb3JK3qpMBUOtJws6yoRohgMKrop8i0TdawDylaKxLX3MFffADDBGX1ep JnlxiEFGkzVvE5TNEdQuGVqfVCHRkbEjGzOha0WfPNrZd8p9zXfv8aAmDNgiBwiTtZ yEPfOevtiE+3ktI486drFPQsmk2rF0dsTViYbIBmTZFCMfcZ+PaIxjxXdciCCjetOe M3hRY0ihlFlDopo8mSda3/DWG8849D3EMgD7Ewi1PqzuVqbTYxQc5WOL2DjFY0AVoq qBmcmMVbOtn9w== From: Jeff Layton Date: Wed, 07 May 2025 09:06:27 -0400 Subject: [PATCH v8 02/10] ref_tracker: add a top level debugfs directory for ref_tracker Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-2-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=jlayton@kernel.org; h=from:subject:message-id; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rouWFdhP/plUwbE1og8p12U//Qo7GRDszZb vz+YlLaseyJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6AAKCRAADmhBGVaC FS1DD/9jx9aWxNjpDHg0x5Y3Nuz8dBFoNusc5ZEv/5ZGG8XoWbO3y+CKR+F26Vo7aBMSRpBrXhC usv1ZQvaqwJVGOWqWWbHHhsEQgncT0V3WWs/nSyVOMsROz4jYG2l159rA6bub0h6/mrvglWVZO3 vNXli2rusl8PPneAe0NF0oFuP9p9PjBYkyoEsBfl8wD6qb2AyuuOu9W7Xaip50/scMpDWEhNryF DZfNjKWDOWer4KsG4/Iuo0tT39LMd6cNYKNfn8xIj3yuNRx1fDnBX4rp21KTWZNexYdbpUFj6+V lndQpuBOmvk9yE7B4KdkhG1KG8KkncUJVqVc8LNV4ag/Kq9BEhST4RqdkmXOUI+wWWTDwqw+spK wLa3rSCDWpEYll/10wDDcBXrgIeBnqcbPfrNI2HiLPlxtg2q6mXtZhEbHDXEor/AxJtKIP8Zqoj XBfrQ6wQ+TKi038H3x6HKzI4vC6Aq/F9GkBMOXgfH+Nntr35mN97aAXxvMQLDdOrQZzQQeoE5zj p6ZlIPGVj0EMumlXyuy9lYFEubdy8FcrsoW3FrJdj7+65QQKDcD1g5AMsHbX+hOIwy3M072yLUN oh1mi6Y1PA3JanP18Nz8qGLz8bIoV6WcC9TvgayZYioApjJ3vjpb85lvPFn4Z+D7LqqKSydMf1V yY6nKOUmaaHrWLA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Add a new "ref_tracker" directory in debugfs. Each individual refcount tracker can register files under there to display info about currently-held references. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index de71439e12a3bab6456910986fa611dfbdd97980..34ac37db209077d6771d5f4367e= 53d19ba3169c6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -273,3 +273,19 @@ int ref_tracker_free(struct ref_tracker_dir *dir, return 0; } EXPORT_SYMBOL_GPL(ref_tracker_free); + +#ifdef CONFIG_DEBUG_FS +#include + +static struct dentry *ref_tracker_debug_dir =3D (struct dentry *)-ENOENT; + +static int __init ref_tracker_debugfs_init(void) +{ + ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); + if (IS_ERR(ref_tracker_debug_dir)) + pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %p= e\n", + ref_tracker_debug_dir); + return 0; +} +late_initcall(ref_tracker_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4B8F288CB3; Wed, 7 May 2025 13:06:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623219; cv=none; b=F/61OMk0pCVB8wo5Mn7qDOiOMuLiII2B2RKEAuRmZWwr3YueFzGhT7mNFZM0biujx5mhMt4auLeJ8drw/ZkR5sjvpquCA4iEWjZSvRgiNfr3SghALGnVfywOER193Xt0ocD/2e60szjo+HU68vDqZXd73A2Z98k/hr7EpWDY0Qg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623219; c=relaxed/simple; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=brWmg3xD87dqXSGvWz33Et+rIbIkp2R+PGDVHyYGEQDMjcKRnT0sgUz8npyvTHGQg+ca+Wx2kCyUEvVXsdbUZGl717UG3LFphFSJQ1OU6mDyHG5jI46M6QjYJn2Wv1BrHMEYrjm9mXsBOMwvFp/1NoQZUDNasJKdy3wn2ISfxvU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=osKYtV18; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="osKYtV18" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9A800C4CEE7; Wed, 7 May 2025 13:06:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623218; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=osKYtV18z2QIDgrRrGGA+bwgg2bLOo4nDe8G1LxKe8G0syYETLEOdSSdwvQ+QKt3g twdu8YOW9sI8mpD2ku8uKnbSmItW1F1XWCuyadcmTKo3efwJSSNkKTGgIaktKUWhEW OrMNopZBFM+d4ciPBqz/r15JHL9mo+4OUDzPz3bCQ199QNf3M+4ynb2+WDrw+rZhcm TzMyCYg6D/N5/YMzPKhchkKRuFttYidqc/dAaTeERtIVOjwGYMoVdH6FUwKZjdIS/v 8EMJtb9GIhTTYKxS64zHZLuKAGpwlzhdmJczcgtR655D03XUYPTTBau+8zLgOVAmas 3wKc1IyXPAuMw== From: Jeff Layton Date: Wed, 07 May 2025 09:06:28 -0400 Subject: [PATCH v8 03/10] ref_tracker: have callers pass output function to pr_ostream() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-3-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4242; i=jlayton@kernel.org; h=from:subject:message-id; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1romT94x+9s2lh2RYe9Ocfw4Nc1aLmVxrSUN rXoQf9aKvWJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6AAKCRAADmhBGVaC Fb84D/wOjfHPc5gHAQ/7h1qVfBFNVqycI54AUE1Vf/WBTylPf9L6Pa3PpwgmyGIZTKzQZOlIjHV RzEUjGEaAiP4kTn0Tzu0kscqRdwr/RG6415tl8CZpxVpBHmWopfdw0zAgiIasADAf6pTal+m2nF Pxf6+4LLIUaNUeQatJAiKh2SXM8gwgt/IVCpfHQH9i8D9KhZFprhV0QLSAsWBbo7fY5dQ29YtRw wlaHQLH5VfW0bEgs65ewNBMFLa1X4KSUXwi4/1AKh4vhmXpRsfYOOa26Q55Xx70/NXbjyfmAV0G 1ZDKeCbFjc612OVWZm4b1yhh6U92EBUjj0NIPeQswHUwoauupqt5aNDGVC6PEM/pVpOpZHVJ9J6 PTn2pSDlPGyHOcHEUmwPayLXzBftT6QPi0eJuJtXRjVa599kD2Hynej4f/tydqEJn5UZ6BccyDm 8sWgkTqf7Wrjxm4ubVM2+5MuyRjTND77av0/7BGcmbLwp64s9ujPLp4kn63H9ohA8kDKHf6eWvw F7jzh18oVONnr6vIVeZSAjbdqewC8F3tg8GC2MZMPaLgj68rRtuU1Ae49jvxqXmNZiV3YgOLSBC agczFCWYrJYX7dbAtRAZR2cxm7SoXDHGpPK62IberS9Y6haPUaQelCNV6vAMJyddzvMohcz/NXa THjbozUj2omVxRg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 In a later patch, we'll be adding a 3rd mechanism for outputting ref_tracker info via seq_file. Instead of a conditional, have the caller set a pointer to an output function in struct ostream. As part of this, the log prefix must be explicitly passed in, as it's too late for the pr_fmt macro. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 2 ++ lib/ref_tracker.c | 51 ++++++++++++++++++++++++++++++++---------= ---- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 8eac4f3d52547ccbaf9dcd09962ce80d26fbdff8..a0a1ee43724ffa00e60c116be18= e481bfe1d1455 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -6,6 +6,8 @@ #include #include =20 +#define __ostream_printf __printf(2, 3) + struct ref_tracker; =20 struct ref_tracker_dir { diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 34ac37db209077d6771d5f4367e53d19ba3169c6..607718d00ffa74bd6d9abf97e91= 3abcfd56dd1c8 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -63,21 +63,37 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsi= gned int limit) } =20 struct ostream { + void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); + char *prefix; char *buf; int size, used; }; =20 +static void __ostream_printf pr_ostream_log(struct ostream *stream, char *= fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintk(fmt, args); + va_end(args); +} + +static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *= fmt, ...) +{ + int ret, len =3D stream->size - stream->used; + va_list args; + + va_start(args, fmt); + ret =3D vsnprintf(stream->buf + stream->used, len, fmt, args); + va_end(args); + stream->used +=3D min(ret, len); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s =3D (stream); \ \ - if (!_s->buf) { \ - pr_err(fmt, ##args); \ - } else { \ - int ret, len =3D _s->size - _s->used; \ - ret =3D snprintf(_s->buf + _s->used, len, pr_fmt(fmt), ##args); \ - _s->used +=3D min(ret, len); \ - } \ + _s->func(_s, fmt, ##args); \ }) =20 static void @@ -96,8 +112,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, =20 stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { - pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n", - dir->name, dir, stats); + pr_ostream(s, "%s%s@%p: couldn't get stats, error %pe\n", + s->prefix, dir->name, dir, stats); return; } =20 @@ -107,14 +123,15 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, stack =3D stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; - pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir, - stats->stacks[i].count, stats->total, sbuf); + pr_ostream(s, "%s%s@%p has %d/%d users at\n%s\n", s->prefix, + dir->name, dir, stats->stacks[i].count, + stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) - pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n", - dir->name, dir, skipped, stats->total); + pr_ostream(s, "%s%s@%p skipped reports about %d/%d users.\n", + s->prefix, dir->name, dir, skipped, stats->total); =20 kfree(sbuf); =20 @@ -124,7 +141,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *di= r, void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, unsigned int display_limit) { - struct ostream os =3D {}; + struct ostream os =3D { .func =3D pr_ostream_log, + .prefix =3D "ref_tracker: " }; =20 __ref_tracker_dir_pr_ostream(dir, display_limit, &os); } @@ -143,7 +161,10 @@ EXPORT_SYMBOL(ref_tracker_dir_print); =20 int ref_tracker_dir_snprint(struct ref_tracker_dir *dir, char *buf, size_t= size) { - struct ostream os =3D { .buf =3D buf, .size =3D size }; + struct ostream os =3D { .func =3D pr_ostream_buf, + .prefix =3D "ref_tracker: ", + .buf =3D buf, + .size =3D size }; unsigned long flags; =20 spin_lock_irqsave(&dir->lock, flags); --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 889B2221730; Wed, 7 May 2025 13:07:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623220; cv=none; b=MxkEghzCjZ1xP0d4cOUU7gEgCNYki+6jFxlWMoinqrtj416AVluv5Pjhie9vBY/+b426WZe7bEH77VK68bgr5C3a3P/exhyB2291MBP1bfFwr7shYw5WA4mFJP+ZkWiFHWpMJMoplN+PgdTs2cOnNQ/Z1a9C2cTIC6OcVRbKMEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623220; c=relaxed/simple; bh=hjRJC+ai7FiQIRoBwApJsexl2tKLt7dyencvNsS2N6g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lHbZ+zjU68+t+Mb6lEclveDrzvjRQqriumkzIHRvx5XwaFpSU04lF5UN7QIrzaf0pylrE3Vdjxj6a5POl0HcpnHxUTDcyb+sJlslGXKFep5a/Gh3JqkbKOgEz2uv4QR8IYI2BwdWcKoJy66KIwcmiO/nl3L5Gl8aESzSR5DkYG0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lnI9d84r; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lnI9d84r" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D3ABC4CEF1; Wed, 7 May 2025 13:06:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623220; bh=hjRJC+ai7FiQIRoBwApJsexl2tKLt7dyencvNsS2N6g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lnI9d84rte198XGtoBgP8PhwKK6a/AJI0dgIysF30jEu76aDahEl3kUrGlQOxXgPo rjP/jiBxjAwatwzTpr33H5GKeDima3BNzugygmgajOvep3gYHJJciJMnBWWcnHu6uX 9lXRdv5XyQoAUp859IXj26rSdSmvN3GsOnCmq1Cm34+F3iM2rM7nHQZSPcAlZuDmWw z4aMYx04x/sDcG0NT6C1A4FHhm+sfGFkSRzdh8YFmioubMWhqa6Qh0W8ced5O0MJ99 IYmLHYx8U+KRq8bFYBvtPQnq63e6Jxd0B977HWEAUgS5bzgGc4uQDG5ExfluxzLPLD 0Qt8JiPpDcUBw== From: Jeff Layton Date: Wed, 07 May 2025 09:06:29 -0400 Subject: [PATCH v8 04/10] ref_tracker: add a static classname string to each ref_tracker_dir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-4-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5956; i=jlayton@kernel.org; h=from:subject:message-id; bh=hjRJC+ai7FiQIRoBwApJsexl2tKLt7dyencvNsS2N6g=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1ro0QXNeF8s8kcU5/LXubRUk2qFpVyUIBOlz W+T68op162JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6AAKCRAADmhBGVaC FRNlD/4wkqdTeC4yZ9b+m6Wlrkjng1/Eb9PHoL/0zELG0CJUik9srEIrVfwsRNJeGCjhpCuDC/6 OluXGlDp4J4SUfSBiSFZxFYlsweLW1SeZlojT3jw/NkrsHNfympoQQLV+kLzK+J97JjSk/V4Khg 78vAoNJFHcFN8J/vQjdRlrT1rvWCLXIR7vt2cWOuPPSk4/GgYETNLHKJlZWdoP4trM0b93DpHtx XpFxb/bo4VMS5ceULGkyEqP6PUjsGddyKwOBdmb4L1JoQdjKITUm52mm+QEulDc9sobe+1dbpcb MM/T89YzpSGOmY8/Ut2kq6FI67360nrjyB8Y5YId4RCwzJze0oDqIGs+c0857W31TwZdoXWa0vj lBQusRaums7SsXsBZfU3FSq6GPyzBskdClavyMQRMwecee6b80kMXIxxBOPxAm8Ku12vuO7NK3H DiVoBYlf6F+cxZcbkfeAbPufWqY6zrzzkklB6poBjEi2noQgmLI/UK+BQWqTOE6jP6EGnV5KhFB Am7G5nSpOclJTTkwvBSydWtl8IuNV9EQCaEC5V8iVxillD14mOeEnsGR9DAbozv6VCKeLJ6CcBA r3DYSxeOwTX9OnGDHJSjFNmfiMtVG9GhqP/HrTwahpwP8L1wCK0ZZqcZbSv29P0aOQFBnJAxYVf 1zxl4uyfn2NSRFA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 A later patch in the series will be adding debugfs files for each ref_tracker that get created in ref_tracker_dir_init(). The format will be "class@%px". The current "name" string can vary between ref_tracker_dir objects of the same type, so it's not suitable for this purpose. Add a new "class" string to the ref_tracker dir that describes the the type of object (sans any individual info for that object). Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 3 ++- drivers/gpu/drm/i915/intel_wakeref.c | 2 +- include/linux/ref_tracker.h | 4 ++++ lib/test_ref_tracker.c | 2 +- net/core/dev.c | 2 +- net/core/net_namespace.c | 4 ++-- 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index 90fe07a89260e21e78f2db7f57a90602be921a11..f2a8ef6abf34d89a642d7c7708c= 41e5b1dc9dece 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -1920,7 +1920,7 @@ drm_dp_tunnel_mgr_create(struct drm_device *dev, int = max_group_count) } =20 #ifdef CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG - ref_tracker_dir_init(&mgr->ref_tracker, 16, "dptun"); + ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun", "dptun"); #endif =20 for (i =3D 0; i < max_group_count; i++) { diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 8d9f4c410546e4144d4bc8bbc6696f3bd9498848..3fdab3b44c08cea16ac2f73aafc= 2bea2ffbb19e7 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -59,7 +59,8 @@ static struct drm_i915_private *rpm_to_i915(struct intel_= runtime_pm *rpm) =20 static void init_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm) { - ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, dev_name(rpm= ->kdev)); + ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, + "intel_runtime_pm", dev_name(rpm->kdev)); } =20 static intel_wakeref_t diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 07e81be4d3920febece34709c63a63204a41583c..5269e64c58a49884f5d71255754= 6272bfdeb8417 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, name); + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f", name); #endif } =20 diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index a0a1ee43724ffa00e60c116be18e481bfe1d1455..3968f993db81e95c0d58c814543= 11841c1b9cd35 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -19,6 +19,7 @@ struct ref_tracker_dir { bool dead; struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ + const char *class; /* object classname */ char name[32]; #endif }; @@ -27,6 +28,7 @@ struct ref_tracker_dir { =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { INIT_LIST_HEAD(&dir->list); @@ -36,6 +38,7 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->dead =3D false; refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); + dir->class =3D class; strscpy(dir->name, name, sizeof(dir->name)); stack_depot_init(); } @@ -60,6 +63,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir, =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { } diff --git a/lib/test_ref_tracker.c b/lib/test_ref_tracker.c index b983ceb12afcb84ad60360a1e6fec0072e78ef79..d263502a4c1db248f64a66a468e= 96c8e4cffab25 100644 --- a/lib/test_ref_tracker.c +++ b/lib/test_ref_tracker.c @@ -64,7 +64,7 @@ static int __init test_ref_tracker_init(void) { int i; =20 - ref_tracker_dir_init(&ref_dir, 100, "selftest"); + ref_tracker_dir_init(&ref_dir, 100, "selftest", "selftest"); =20 timer_setup(&test_ref_tracker_timer, test_ref_tracker_timer_func, 0); mod_timer(&test_ref_tracker_timer, jiffies + 1); diff --git a/net/core/dev.c b/net/core/dev.c index 1be7cb73a6024fda6797b6dfc895e4ce25f43251..380d07bec15a1f62ed27c31a6e2= 11e74f3a5561d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11620,7 +11620,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv= , const char *name, =20 dev->priv_len =3D sizeof_priv; =20 - ref_tracker_dir_init(&dev->refcnt_tracker, 128, name); + ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev", name); #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt =3D alloc_percpu(int); if (!dev->pcpu_refcnt) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index b0dfdf791ece5aa8fefdc2aea1ff4a9d9c399d72..008de9675ea98fa8c18628b2f1c= 3aee7f3ebc9c6 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -324,8 +324,8 @@ static __net_init void preinit_net(struct net *net, str= uct user_namespace *user_ { refcount_set(&net->passive, 1); refcount_set(&net->ns.count, 1); - ref_tracker_dir_init(&net->refcnt_tracker, 128, "net refcnt"); - ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net notrefcnt"); + ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt", "net_refcnt= "); + ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt", "net_= notrefcnt"); =20 get_random_bytes(&net->hash_mix, sizeof(u32)); net->dev_base_seq =3D 1; --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E918F28981C; Wed, 7 May 2025 13:07:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623223; cv=none; b=nNo7+6hgHzjZze+FAEPpfRnuHFqVOQ9RaWcE6fzAcOkAF0zc6BMOq7CIK7h7gADDfd40yKfvTYa9L9SL1SLB5uY/IKjIV8qn7niUgnBKnFu3Ml9jdMmjayDIjNspWyrEC2ZNRbmlzb4DuIzPe59KcXjqVOzdJOqwDoD/Eb2AHP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623223; c=relaxed/simple; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xwx9QYdC+Zkh8CRw25G2iBq4m6B++vOuBedVty0VtDYxw6LTSuKUOohB9ISQQGY0hHw2oSJT97qFtsmp0ocx0LzbiF7Rhw4x+qiPlw1/bhIzgQg7t9RGfah8uYicXw8QCgonHhYMEKL08yZRaFww7BpQNTQR5EjqJFvqc0usaFA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OPWjIqBg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OPWjIqBg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F8A9C4CEE7; Wed, 7 May 2025 13:07:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623222; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OPWjIqBgm18COPGkhkvnoNP5OQEcqxFmHHACaXFLibDTmOQEp7+a9G1roDU2KHJIz UK7EVbtG4J3FURABIQkc+LGJ2cQivI3ZimLvTIfzebXbLhqmm3Z+7T73tBTmHJahM1 rvIztaMyh/+gaTlAaPuwKM8eJee4smFyFCmuas8nupgzscmk8k+cSYxad2Ca90Q6U9 +N4HTgzrF09EQ31r3/+sAhVQ31Fix1c9nJmktU7eyU7OcUrNiPdM+S+KgQ3GPCmL0k A++/LsizCt4Js+hpXqfHkvnXBJjRZkMiEMqJc817m94gvQYv3ZT3k+NELYktq3QWZg F4umwDXeM/wWw== From: Jeff Layton Date: Wed, 07 May 2025 09:06:30 -0400 Subject: [PATCH v8 05/10] ref_tracker: allow pr_ostream() to print directly to a seq_file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-5-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1919; i=jlayton@kernel.org; h=from:subject:message-id; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rp5usXP5XgJKw9T/gfib/bf2BnPOewnHgke lh+AS/uB1aJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6QAKCRAADmhBGVaC Fe/DD/49hv4ZtdTkKa+MGD8AR7sJ7Fxu1qo9LkUDBvq3dgnrZxHJSsJkvGim12PnHyDTDHy6qOo PMJtfo+/EWuSLrunWRyAh77cShp6+LMnhCIUhBxk5FbnHQMlJt360cqlVqJtdrjCciW1uLiY9x1 hZvXEf1J3/HC9G3NX6NqitZa6DbDUKn/svEzFe3kTYn7xwquSWMwRMXKiL8kNbHxZp1V6UWU5NP UurWuyhoNX/7mQvL3CQpEKDqdyVkq0/jq3h3WaLdrtBSq91PUloxBEbu36U4pBPibLAjp8DZ3MF v5cRXBEdNXQhO+RPt671I+peCJG5Qv/vQP64+dNkvGSvWAZo4xhH4mvlbxeaquhP5om4Zu7yND8 yr+5YNDgB9G3KI7+gmgXkRZdZJc8movOpx+YDvgUPnZ5HFfn1/UxgN9V1EQgAKGZa/A/EELs3uw UKMpdJTMe9BdErAjheLJtXIX6GBM6ehIYYlUXjzHNb+X46Hg2GGzHTwVhRUpKvFQOr7ltDC3N05 ItJQHy9c4H094ZwYvp7jjXbui4UKhc7yL9TQiG97aMNnX3OwJrqwXV48XRwgMBoULiJgovyIbb6 btjvZ+pfC/dOZo/KakQ3Yaz2hJVmVd6aDhloqJO8b2mjguGAMswfPJyRfRrvU2hIcFVQFJAB26m +AYJTz6OiRKzXrg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Allow pr_ostream to also output directly to a seq_file without an intermediate buffer. The first caller of +ref_tracker_dir_seq_print() will come in a later patch, so mark that __maybe_unused for now. That designation will be removed once it is used. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 607718d00ffa74bd6d9abf97e913abcfd56dd1c8..6e85e7eb347d86775ba38a72dad= 7159f9ac41ed9 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 @@ -66,6 +67,7 @@ struct ostream { void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); char *prefix; char *buf; + struct seq_file *seq; int size, used; }; =20 @@ -300,6 +302,30 @@ EXPORT_SYMBOL_GPL(ref_tracker_free); =20 static struct dentry *ref_tracker_debug_dir =3D (struct dentry *)-ENOENT; =20 +static void __ostream_printf pr_ostream_seq(struct ostream *stream, char *= fmt, ...) +{ + va_list args; + + va_start(args, fmt); + seq_vprintf(stream->seq, fmt, args); + va_end(args); +} + +static __maybe_unused int +ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *se= q) +{ + struct ostream os =3D { .func =3D pr_ostream_seq, + .prefix =3D "", + .seq =3D seq }; + unsigned long flags; + + spin_lock_irqsave(&dir->lock, flags); + __ref_tracker_dir_pr_ostream(dir, 16, &os); + spin_unlock_irqrestore(&dir->lock, flags); + + return os.used; +} + static int __init ref_tracker_debugfs_init(void) { ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A6D0221730; Wed, 7 May 2025 13:07:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623224; cv=none; b=D5BTTRxSgy2WGqnPyC+IouWfBM+3NdcwzAFjdArh9dqy9gVlAOJb7zS+kcr4+BucrDk2tOklNn1iORSzeoErIDaEu0EJ3lyF9CLyoOmcrr084APkFvGRaSAFddA/EOjDsKrrfnkIaM77CHbUDEWe0RuX0GrTFnDoNKH5UIDJHD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623224; c=relaxed/simple; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=agWK64q08/EWzxfCPPhCg/Gz8gaTwFf6hXBPYp6nzlGUE7WkgwxWm95T8VRZ9xJA+GMON70oACU4CW15RiqLN2QefbLCaKCKCJMpWVRkBqYvsq4kvE5jSFsKkWcjWscU3bljOr/z7C9NLRFyDp6shZhF9K3UJ6nrv005OV0QVJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=APeV0Dln; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="APeV0Dln" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A0F3BC4CEEB; Wed, 7 May 2025 13:07:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623224; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=APeV0DlnD30sZF1I21aaE5rI2QhHTh1mMzZTAltQOEa/qCV1/43wyTRblwrfkACpI QUmdYPDK7g9OrO6XLqXu1z+8d0FuazuVk7wAyKrm8ycSCK+7YWTbb2Q4Ki/Fhxjp9o OOlZkqhvmhhOAXb0G35knIZfOMlsJF3THJlMn+bTnZutSWRbjBvTPMwILCZSjQHRCv FA9TSq/ThPBeZ6EDbnBL6G3D/Sag6Efxzg+U/2fxTxWozddLCHjd5iR9zTi5JFl9nj 06Rwqdi2akXOt9VyGnLxFW7nHHrLeOvaHxqqOlUykZChvjzhJZzJ0qOdpcaIRLgoHS phla2ynha/1OA== From: Jeff Layton Date: Wed, 07 May 2025 09:06:31 -0400 Subject: [PATCH v8 06/10] ref_tracker: automatically register a file in debugfs for a ref_tracker_dir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-6-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5577; i=jlayton@kernel.org; h=from:subject:message-id; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rpJ9dAaBE2+hZdo/e5AzuR7hjdBnAwmAfHQ lZsZQMG8sGJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6QAKCRAADmhBGVaC FVLmEADUBp6vtYIDzXI2dcsQeyZ+WT1CbfUEcaF5zU7tw6TTRNIDyzbqYMpVSHUulBqcm7ODskT glaMpPsT+H6pflPTmwOlsKLUUFskc5PDVvC3Z73AhBAT1XIRd9WCIMY+TBHPLUnMRk6pTfVzmHp 8lPcG2LlKl6mwiBdOldnstBP9hPa9uo07LKv73G5GeadrT5ZaSGqOtguouvNfFAHjcZTOA9aYOI O25GORCqVVCLDSaKTAI1i7hY5MwogF6A2yAMFhORuI05kOnSv3Gwizco2U0gdzGZFtIwJG/JvbI DM/ZI5LcPgQqGDTsZegi7aSokHRWdsG1sXHI3/3Kq7PY+CJPj+TFk0L9biyn/+/3ZhK9sBZO6qX ZWipX325JvQvCZC2L7t2sGGSWi+I4bAuIvw18GOnYy3HjuLtVK/CfeVnwX66uoq7/FH8rPsMfCi KbgtOMVsYhePrpEXcAKdOmF/BKpfn4izARNKjSbiERSas+SJ3Wrx6mv7/whJ/617fxs4IXWvsN3 hhEfvC3qeyLatU8/O4do5vlEfAq/2HC09S0lC9BuIvR47m7eMOinUk8rDkEi06BZnxaLguuWoJ9 rimKMX070sjpt4XV6UKe2VfKyaJUHbl61R2Bp6YvnTHKefjKuRwousrFfyi3UYtdyix3Y/kg7jw pNW2SxpyTgQxPVA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Currently, there is no convenient way to see the info that the ref_tracking infrastructure collects. Attempt to create a file in debugfs when called from ref_tracker_dir_init(). The file is given the name "class@%px", as having the unmodified address is helpful for debugging. This should be safe since this directory is only accessible by root If debugfs file creation fails, a pr_warn will be isssued. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 23 ++++++++++++++ lib/ref_tracker.c | 73 +++++++++++++++++++++++++++++++++++++++++= ++-- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 3968f993db81e95c0d58c81454311841c1b9cd35..dd289fdda12b1a10197912f5796= f97002e785aaf 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -20,12 +20,27 @@ struct ref_tracker_dir { struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ const char *class; /* object classname */ +#ifdef CONFIG_DEBUG_FS + struct dentry *dentry; +#endif char name[32]; #endif }; =20 #ifdef CONFIG_REF_TRACKER =20 +#ifdef CONFIG_DEBUG_FS + +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir); + +#else /* CONFIG_DEBUG_FS */ + +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ +} + +#endif /* CONFIG_DEBUG_FS */ + static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, const char *class, @@ -39,7 +54,11 @@ static inline void ref_tracker_dir_init(struct ref_track= er_dir *dir, refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); dir->class =3D class; +#ifdef CONFIG_DEBUG_FS + dir->dentry =3D NULL; +#endif strscpy(dir->name, name, sizeof(dir->name)); + ref_tracker_dir_debugfs(dir); stack_depot_init(); } =20 @@ -68,6 +87,10 @@ static inline void ref_tracker_dir_init(struct ref_track= er_dir *dir, { } =20 +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ +} + static inline void ref_tracker_dir_exit(struct ref_tracker_dir *dir) { } diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 6e85e7eb347d86775ba38a72dad7159f9ac41ed9..1df12625d80cc7cff65d9f6be89= e1dd5c5ffb7f6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -29,6 +29,14 @@ struct ref_tracker_dir_stats { } stacks[]; }; =20 +#ifdef CONFIG_DEBUG_FS +static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir); +#else +static inline void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) +{ +} +#endif + static struct ref_tracker_dir_stats * ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit) { @@ -184,6 +192,7 @@ void ref_tracker_dir_exit(struct ref_tracker_dir *dir) bool leak =3D false; =20 dir->dead =3D true; + ref_tracker_debugfs_remove(dir); spin_lock_irqsave(&dir->lock, flags); list_for_each_entry_safe(tracker, n, &dir->quarantine, head) { list_del(&tracker->head); @@ -311,8 +320,7 @@ static void __ostream_printf pr_ostream_seq(struct ostr= eam *stream, char *fmt, . va_end(args); } =20 -static __maybe_unused int -ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *se= q) +static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct s= eq_file *seq) { struct ostream os =3D { .func =3D pr_ostream_seq, .prefix =3D "", @@ -326,6 +334,67 @@ ref_tracker_dir_seq_print(struct ref_tracker_dir *dir,= struct seq_file *seq) return os.used; } =20 +static int ref_tracker_debugfs_show(struct seq_file *f, void *v) +{ + struct ref_tracker_dir *dir =3D f->private; + + return ref_tracker_dir_seq_print(dir, f); +} + +static int ref_tracker_debugfs_open(struct inode *inode, struct file *filp) +{ + struct ref_tracker_dir *dir =3D inode->i_private; + + return single_open(filp, ref_tracker_debugfs_show, dir); +} + +static const struct file_operations ref_tracker_debugfs_fops =3D { + .owner =3D THIS_MODULE, + .open =3D ref_tracker_debugfs_open, + .read =3D seq_read, + .llseek =3D seq_lseek, + .release =3D single_release, +}; + +/** + * ref_tracker_dir_debugfs - create debugfs file for ref_tracker_dir + * @dir: ref_tracker_dir to be associated with debugfs file + * + * In most cases, a debugfs file will be created automatically for every + * ref_tracker_dir. If the object was created before debugfs is brought up + * then that may fail. In those cases, it is safe to call this at a later + * time to create the file. + */ +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ + char name[NAME_MAX + 1]; + int ret; + + /* No-op if already created */ + if (!IS_ERR_OR_NULL(dir->dentry)) + return; + + ret =3D snprintf(name, sizeof(name), "%s@%px", dir->class, dir); + name[sizeof(name) - 1] =3D '\0'; + + if (ret < sizeof(name)) + dir->dentry =3D debugfs_create_file(name, S_IFREG | 0400, + ref_tracker_debug_dir, dir, + &ref_tracker_debugfs_fops); + else + dir->dentry =3D ERR_PTR(-ENAMETOOLONG); + + if (IS_ERR(dir->dentry)) + pr_warn("ref_tracker: unable to create debugfs file for %s: %pe\n", + name, dir->dentry); +} +EXPORT_SYMBOL(ref_tracker_dir_debugfs); + +static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) +{ + debugfs_remove(dir->dentry); +} + static int __init ref_tracker_debugfs_init(void) { ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E848289E2E; Wed, 7 May 2025 13:07:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623226; cv=none; b=ptCFBimffxKxQ/eACTYr+5Psf/bpvRVWjgF5Y/elV9D7Px7L0mHFVKmwg1BuvYUN/0WQVS1cP0AAZ9fBTVX67yPeqsgL3r7MWG+aVSOIwR+RWETS5AcNP2Wj/v9BJMKoW2FRTplVmyTKjMVmDe5dk4ZhAlDSPwh47XVwCoyu+MI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623226; c=relaxed/simple; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RILcLr8G1EJpZO9tQzauwmjz/ki5YXEGObhhSRc1WhMFrqvlo5RxtOPXhEFqDGgUhIZ2giqdurdkJ5Shd0VLqt7u3qPdFQ357zxDnsUWQ8rsRRAMqtukxOlzsYcmkX6QIQOF8Y+Z3/An1Ws4+xYbthYM2kxtt9uyy6/43a/82oE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=t3PCvJ1M; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="t3PCvJ1M" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A33C6C4CEF3; Wed, 7 May 2025 13:07:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623226; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=t3PCvJ1MjQWHoHr8rcY1szAUqxeBgbXiuAL1OIT8maJxLGNQbEMgm2DaCy+/i4O0l JAppUkNSvJx9NeVMXj4CsxAds5llgmcMdJvhfeTlu4Na2HPDWROrq8oQF53ncAKEM6 ii6cFIyyy7X3xT+7MVn0qoRzmYWs+NZIxuxrAXYJ/a9uzSbeg3CTOSiotWa9S4rL4G ihEi+s1MpVE/VWtAHSh4POoqUphAG3quijYfs1hHg8P1U91MmeCSxcs6ffKaniBCYy W5Xw6dCMCjXAeV8LG/tVoZV44PCyVvwlvfiq9CfgDVAfHZx2C2lBPbdPihs2ZNZa36 eBdzJKH/pRuoA== From: Jeff Layton Date: Wed, 07 May 2025 09:06:32 -0400 Subject: [PATCH v8 07/10] ref_tracker: add a way to create a symlink to the ref_tracker_dir debugfs file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-7-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3234; i=jlayton@kernel.org; h=from:subject:message-id; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rpNCKf4YsMQbfK8sCDrPcx8y64dozFIWGHF 51xZx/6/0qJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6QAKCRAADmhBGVaC FfGHEADFNJlG9mOw4sk3p/gIAK2iEVfgZGxxN4uSWxWAs0FRQlqwVpfDmHS1luz5RZNEvXz3j4K EIyP1LexlPBoaaBMZ8gUYaUdO6NAAFA1M9HGcnLFN1QpOUJy2w6W7brMQ85ZnXMIRQOY8qoNaLU qydiwKtT0F5C6r37WOk+J2GA1pqghmvifgNQuBFFEW0BDk0qP7Xme8k3CflAMZB3TNpche1sEGi ol+VpRqpaO7C+iYWQwaXKfYFibA5h1BZGWF0y9RXq58yJYlb5dKuvoj858qL3Ot1bO8rJsyU42i NI07pdIXTnT+LAUB/11YhgrMa22Qj9W9eyRyPDOYslXqZkjQrkkb7bZtmbqIyD2Uz7n/K76ZCi6 Xgp9kqcOx83Dxw43RtGRjko1yNA+kTT5MJtjbIGqODxHlbJvXlhhBnBGPjQRI+SEGsFMwWKcN9y BE5iH5hA4+c1Acyd9RRCWsLNYvQkqvdTpiAT+iYF7twk5tLGpJm7fIK2nhBgMql/9l/ndUgQoaB J+aZ2tPuUMlkY3nlzEH5r7VsxCyi/kY5Guys5wDzOTUPHqwOVagjhUr7zgNykpAv6k6xSdQVWWT z/h/qGy/QTfg/u4pzTD5vSv+bBAIj3RZNCp7zdYNgwuJRYym6Z7I1lsikk1n0ozKNjlT0Mk9iac U8uubKn//wfAQtA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Add the ability for a subsystem to add a user-friendly symlink that points to a ref_tracker_dir's debugfs file. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 13 +++++++++++++ lib/ref_tracker.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index dd289fdda12b1a10197912f5796f97002e785aaf..ddc5a7b2bd84692bbc1e1ae6767= 4ec2c6857e1ec 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -22,6 +22,7 @@ struct ref_tracker_dir { const char *class; /* object classname */ #ifdef CONFIG_DEBUG_FS struct dentry *dentry; + struct dentry *symlink; #endif char name[32]; #endif @@ -32,6 +33,7 @@ struct ref_tracker_dir { #ifdef CONFIG_DEBUG_FS =20 void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir); +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...); =20 #else /* CONFIG_DEBUG_FS */ =20 @@ -39,6 +41,11 @@ static inline void ref_tracker_dir_debugfs(struct ref_tr= acker_dir *dir) { } =20 +static inline __ostream_printf +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...) +{ +} + #endif /* CONFIG_DEBUG_FS */ =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, @@ -56,6 +63,7 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->class =3D class; #ifdef CONFIG_DEBUG_FS dir->dentry =3D NULL; + dir->symlink =3D NULL; #endif strscpy(dir->name, name, sizeof(dir->name)); ref_tracker_dir_debugfs(dir); @@ -91,6 +99,11 @@ static inline void ref_tracker_dir_debugfs(struct ref_tr= acker_dir *dir) { } =20 +static inline __ostream_printf +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...) +{ +} + static inline void ref_tracker_dir_exit(struct ref_tracker_dir *dir) { } diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 1df12625d80cc7cff65d9f6be89e1dd5c5ffb7f6..5e84e5fd78e147a036d4adb511e= 657da07866a55 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -390,8 +390,36 @@ void ref_tracker_dir_debugfs(struct ref_tracker_dir *d= ir) } EXPORT_SYMBOL(ref_tracker_dir_debugfs); =20 +void __ostream_printf ref_tracker_dir_symlink(struct ref_tracker_dir *dir,= const char *fmt, ...) +{ + char name[NAME_MAX + 1]; + va_list args; + int ret; + + /* Already created, or dentry doesn't exist? Do nothing */ + if (!IS_ERR_OR_NULL(dir->symlink) || IS_ERR_OR_NULL(dir->dentry)) + return; + + va_start(args, fmt); + ret =3D vsnprintf(name, sizeof(name), fmt, args); + va_end(args); + name[sizeof(name) - 1] =3D '\0'; + + if (ret < sizeof(name)) + dir->symlink =3D debugfs_create_symlink(name, ref_tracker_debug_dir, + dir->dentry->d_name.name); + else + dir->symlink =3D ERR_PTR(-ENAMETOOLONG); + + if (IS_ERR(dir->symlink)) + pr_warn("ref_tracker: unable to create debugfs symlink for %s: %pe\n", + name, dir->symlink); +} +EXPORT_SYMBOL(ref_tracker_dir_symlink); + static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) { + debugfs_remove(dir->symlink); debugfs_remove(dir->dentry); } =20 --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F033C28A1DA; Wed, 7 May 2025 13:07:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623229; cv=none; b=Shyj7QQJTTq1SOOobLc7cp41AG2cqWX7L9XKJtDO+ki0I/TVQ/nngwUgnpmBCNryyw3tc0HtyJ0vf+2mE2M3fSdJkjf/ImefMkI5u/PkkcKe6x9V0cewXfTW3Mljc5c/MTGLpQNtgu2j0Kz+6IqRQu+VXtaz3vVox+eGtzmY+pI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623229; c=relaxed/simple; bh=HO4xbozyJMxD8zWDiEa6K7DNK6Y9m2+KGX7iMwR0BG8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X9offzhccePY/jBqlVS/23OCZ8UKBzptb93ZOoRpdwlHN1Fusr9KkOIDhoowmzv4xt69jMsooF0JDmJo3tajUD+jLcXk1/QrFg+/tEqmn0RDB3UNIWqFoxvzRIknSNXEKfOhf9EpL39ec3QBLFzjQGgWEoIVSjdU9uOY5lYJq28= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PEMOod6K; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PEMOod6K" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6843C4CEE7; Wed, 7 May 2025 13:07:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623228; bh=HO4xbozyJMxD8zWDiEa6K7DNK6Y9m2+KGX7iMwR0BG8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PEMOod6KU9PVRGVpZ4Gcw+iwdFO25WoEzI7sxQqIPemICVpnlzHXAGF5G5OXQGJ5u 7sjL9SbqPV11CaMXdv3pYqeYh5Xa6Jc2REDn7pfJZojwG6wdDdM3J/TgOaWVXDnewl 1ACOPKX+DxssryRPH1pJ8gEHw86F5xQ2RK1k0bnV2ZU+HDbjj/kcPDpaD2Bp2ZPGbY 60hy4oauCRNq33Un3n1Rbsn5eyGZd8VdYSFreLEJpuYKqb10/wwEdBjCJZQ6iBMdNo 8eCHJR87IiSc2MnCSXQDcvZLsV8d+FEMuaE1sRSG8OW8WahcOhUt+c5f3r4akHlVVF qPueO54ECCxSQ== From: Jeff Layton Date: Wed, 07 May 2025 09:06:33 -0400 Subject: [PATCH v8 08/10] net: add symlinks to ref_tracker_dir for netns Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-8-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1849; i=jlayton@kernel.org; h=from:subject:message-id; bh=HO4xbozyJMxD8zWDiEa6K7DNK6Y9m2+KGX7iMwR0BG8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rp/8dRU+okF/dK0ceL7n0cYyDdzyTteOfWs Y5VZy4bCYqJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6QAKCRAADmhBGVaC FRSED/0fr3wOnxxiq0T8aCKbZbTIrIB3phIIAZjsA2FIm0rmml4DNHhERPpmeGqvMRqhKT9rcGc QzBsQexvHh3RHfY1C7IzeADX3AGVpI9cuDY4ySC6Xoey6VnhSuO0forj/HpHFGCU4n2DEaNObIz l3mWdcElISuwP8t+BI5G/65/UKrtCHezR8pVwcytBtIInv2OnWFZ9BVmrjwZ93hOMV6YjvNaNDZ qnviKszbmgS1FHaQFGjPXWyAJG0KvHFQzHihhg1LAtdcrUyXUEMwUTkfvbbg4MfB6T1WY9gCi+i ODDP6lnLI58v1YSOmX/6R+C428kuJ5ulDkS/Azd54lmSwhZk41HC0X9njt2Aji9fJaayjra7Uk+ qVoTneTDHbXsznzCzK906DGDw9jiHRUUDdyGU7Uchfhy1JHtuZDeZW3++hmjFQvozqiyBuQMpKK sPPDFlQsWbdQECb0cchy7n1EXf9C/kv1M1QNgBhCX68EAthP5bv0SU9tE4ZuIIMAqVZO1YuCz2W Di9rbkTxPbpyggkVRD3f8ossPp57njhBH7RvSypT3DaSKjhvTHqJ3P6rI4HeUikwWTVrGSIP5qG WwUh+dQ9iTrCvczyt16nNRiy4LhtSllmjaS6bSzMYTMiY1vq0E+35Utr0YeRUSel3Ku2rtKKNRc 2703n1OZRfuXZSw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 After assigning the inode number to the namespace, use it to create a unique name for each netns refcount tracker with the ns.inum and net_cookie values in it, and register a symlink to the debugfs file for it. init_net is registered before the ref_tracker dir is created, so add a late_initcall() to register its files and symlinks. Signed-off-by: Jeff Layton --- net/core/net_namespace.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 008de9675ea98fa8c18628b2f1c3aee7f3ebc9c6..1c5e0289f0f0b37c61852d95d4e= 11a8c12a868f3 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -763,12 +763,40 @@ struct net *get_net_ns_by_pid(pid_t pid) } EXPORT_SYMBOL_GPL(get_net_ns_by_pid); =20 +#ifdef CONFIG_NET_NS_REFCNT_TRACKER +static void net_ns_net_debugfs(struct net *net) +{ + ref_tracker_dir_symlink(&net->refcnt_tracker, "netns--%lx-%u-refcnt", + net->net_cookie, net->ns.inum); + ref_tracker_dir_symlink(&net->notrefcnt_tracker, "netns-%lx-%u-notrefcnt", + net->net_cookie, net->ns.inum); +} + +static int __init init_net_debugfs(void) +{ + ref_tracker_dir_debugfs(&init_net.refcnt_tracker); + ref_tracker_dir_debugfs(&init_net.notrefcnt_tracker); + net_ns_net_debugfs(&init_net); + return 0; +} +late_initcall(init_net_debugfs); +#else +static void net_ns_net_debugfs(struct net *net) +{ +} +#endif + static __net_init int net_ns_net_init(struct net *net) { + int ret; + #ifdef CONFIG_NET_NS net->ns.ops =3D &netns_operations; #endif - return ns_alloc_inum(&net->ns); + ret =3D ns_alloc_inum(&net->ns); + if (!ret) + net_ns_net_debugfs(net); + return ret; } =20 static __net_exit void net_ns_net_exit(struct net *net) --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04CA228A1FC; Wed, 7 May 2025 13:07:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623231; cv=none; b=Db/GCZQPPuU1EyuzLb3fE4YM9z60Pt73O6+W1QwfV/Fgv8YWhG3TXmyWyKZkQ0UlZrN1A6Luj4MKyzpkXlRg+wBfgPlgB+6YZtpjAl/xANEq0aNo7xQh+ee0RvdEwxZpspZmd30LBE9ic9+PjNhP/Em3O7uS7GVnJhKSSSvpXuI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623231; c=relaxed/simple; bh=Les2Q1JDGDchAASaheHbCbzDsZvfcnT1V7XgBGKxhhs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pY5F6olhJkXFemHBnT7gjumA1UgzmDGA+hCCTc3HFNvcOUsuboiXJzsNfKVB+5Gzeh4IRiACuV0B5iYvPsoCsYEEVcSsKDFGi4AbOtHREvmPGCA8bIAh9S3ihBmooDoOJRz9axjqa74LWFHEgFRS9BAgUuOYYNZoHjscG+Fn2io= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Tw3CzRp4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Tw3CzRp4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8A75C4CEF0; Wed, 7 May 2025 13:07:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623230; bh=Les2Q1JDGDchAASaheHbCbzDsZvfcnT1V7XgBGKxhhs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Tw3CzRp4L3LQr5czxN2kUEnEz0LL5mCdcY1maVcQFzv9DBDF1O0c0smvQkaSmXiBq LEVJ+ON+Chyo0MWcRso6HsL5CIzE8sAeaJY6qT6pSWC57Z33cR7TpaQFS7jCFPBVdF PC4A+ot/1i9kNVXX4ClXBmgyqi1MHY3/EFMDiUxbjsTHvM+jxIhBI8Pq6gtSTmI3V9 6y98wWiqYFkT9BHEMCMjkgAoSPh4Clc23eg30n2VJuVUbGthQB1FRvUyHwUxiNUwte A4xfB61VQxt7A4bcD/rNF1E6B/XWT8S+oTPGlpHt9reJPjESuzwvdm8x/SHS1ioB2t in5yKCR0iOsYw== From: Jeff Layton Date: Wed, 07 May 2025 09:06:34 -0400 Subject: [PATCH v8 09/10] i915: add ref_tracker_dir symlinks for each tracker Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-9-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton , Jani Nikula X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1532; i=jlayton@kernel.org; h=from:subject:message-id; bh=Les2Q1JDGDchAASaheHbCbzDsZvfcnT1V7XgBGKxhhs=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rpnQ80pXEoPAGYv6tv9H2PzPm2jcqdwBtyS QaXU2VToM6JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6QAKCRAADmhBGVaC FePeD/95w0gUIXb5xCFLvY2PHFN0MuH9m318jSFEga+naOGgx6O/OZfGaiHphb/rKy9bdRcABUB rlWJP9KHiqSy9aKzsPn8JFJ2LWiSY65wesScQDh+RJAYiUPtBhFQbzgn7J/ADdFmQenqRFZKTKI vSJ1Bp/CpJ78Jmwv97kaTCMudRR2oNIKlixRFB4L0AtPLuYVxcMXcbjuSSIt4OmRw33eGfoBKED PEF45CLu/qvRISjL0xdHjmrlD8u88Kb9Omr9/1+mxua+XPc7FBUoLJdo85cO8ExUHM6PZGdwXTA RlQjPIvdjT7a01OB+c3dkn6hmr3T2Uhv8mQmV8y9px/0Ic30ATlA5tsB1uXuhldeBiUs+u68/zT FHpNVlmUQ85DF1s68uiga6V/Vn+39ogPxNTSZUXZ8GiHPntNjwKuIWvtaeoN+YSZ86ruriFZwYy Wh4p0hKrU/cAkX+3fVFp/+tiNV7oju5IleRWV33kB6XpMwcvq8fBUTcGHY8JMT+OBYSZzqDQv9Z UTv2PqtPgb1o4/z8B1hb8CX7Us6ClFkOvDpKfrUky30d06sIwX8JK/1UqXmV6E9sOj8KDCXs6YQ Tv03mBEeIS2iHUCzs4f0OnNb6rCYQtDGQsnDHF+i4dbifSXZEzRNL5IlOg/VclSfd9ToJOgVk1h ypVGb5sVS1Sv4oA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Now that there is the ability to create a symlink for each tracker, do so for the i915 entries. Acked-by: Jani Nikula Signed-off-by: Jeff Layton --- drivers/gpu/drm/i915/intel_runtime_pm.c | 1 + drivers/gpu/drm/i915/intel_wakeref.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 3fdab3b44c08cea16ac2f73aafc2bea2ffbb19e7..94315e952ead9be276298fb2a02= 00d102005a0c1 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -61,6 +61,7 @@ static void init_intel_runtime_pm_wakeref(struct intel_ru= ntime_pm *rpm) { ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_runtime_pm", dev_name(rpm->kdev)); + ref_tracker_dir_symlink(&rpm->debug, "intel_runtime_pm-%s", dev_name(rpm-= >kdev)); } =20 static intel_wakeref_t diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 5269e64c58a49884f5d712557546272bfdeb8417..2e0498b3fa7947f994de1339d4d= 2bed93de1a795 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -115,6 +115,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f", name); + ref_tracker_dir_symlink(&wf->debug, "intel_wakeref-%s", name); #endif } =20 --=20 2.49.0 From nobody Sun Feb 8 09:32:16 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BB48288C03; Wed, 7 May 2025 13:07:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623233; cv=none; b=j3okzgxwiflZuDVdBgJK7juqWq6+Zef7WPSBjw+Dpx3AddmsPSdfxXJqJ3CuSN2DRUfM8SLo0+S9OGAWlh9J30FlWsVGWUGZoOzrrBhN2vhpMYfqjsr2o/N+aLYP9ar/EOH5Zmas67cXXSDm1xt5n0tcHfTHSjerleoIawai+es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746623233; c=relaxed/simple; bh=okYdOkUfuYxZjDxBTddV/Z8yQpoJhL8u5feYj7TGts0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QyXjT44J98brIS8RstuTusbqdf0COTe4KORYjqWVVNMLplAGsj28Zt3Aox0czSzRJlOea8VaaCgWovTvo546Xp3Mqj/AzNMPmB/UrPrt9dW2jQvnjZY3SqsqN8dS00huEUNttzXVOpGhQkqRHj5JzY/staSMlz8ylc6TdRxONDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HnHg3+DG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HnHg3+DG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BA731C4CEEE; Wed, 7 May 2025 13:07:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746623232; bh=okYdOkUfuYxZjDxBTddV/Z8yQpoJhL8u5feYj7TGts0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HnHg3+DGLlrxKZ9mSjuCGsnGd5Y+1rwaDvjYe1G+LvQsO4UYdJfmEaNt6OBhBeC5C gU6/75IcmlFeKf8HD7/uy8O8bDHpTcSqKPTBj1GAdyeDAC2mrTR+na1/2iHzyz+EEA yqpXV3B7pP97SInR4tjfp2S/3SUMLDTorpNkvWbnocgZIIUZSpyAKXtc37XLr3b3C5 IYlFz8GuoImULqAhku6T0I885x1XuqPlexM7vVNfHrGolh9lb/TLoe5R9ogQ8xYIFH F93ILorXRmDaA65Ix5gFK1gKWY+zagWJoOGpHqdmxqbOiIF8d0AdlextZ2XXHB8jVZ +0rz6RscGYZ3Q== From: Jeff Layton Date: Wed, 07 May 2025 09:06:35 -0400 Subject: [PATCH v8 10/10] ref_tracker: eliminate the ref_tracker_dir name field Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250507-reftrack-dbgfs-v8-10-607717d3bb98@kernel.org> References: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> In-Reply-To: <20250507-reftrack-dbgfs-v8-0-607717d3bb98@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7622; i=jlayton@kernel.org; h=from:subject:message-id; bh=okYdOkUfuYxZjDxBTddV/Z8yQpoJhL8u5feYj7TGts0=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoG1rqU5ozLBZRcDd03PFM46qf2B9VyS2sK1Zk5 rBzl+kH1TqJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaBta6gAKCRAADmhBGVaC FViCEADDWuqtGBgeCFg273dBepRhG7snk2v/1x6vSEBcVK6AIrLQvGy88yjzw+df03FW5WRqSFM x9xamRt2FAQRgGPeoKnx+XUwbuiIoqFypI5iGeB3Ef2m6iwZr6+d0YLv3MENbiVCbEK8iaaYlnm gGDi4Aam/VDumyaT3IPiBs3iDJftSCzzmnE4MiVDEn/XvJYeMe0dTbCQIcCriOsFquWFxZOoBvL LStIwQ9sPBM8ZNM/Opi0MXveQh6pNoPFQdXVFFUyAGGFe6wuM5+Gx2FdCP1RB1QMnU/oy5o/wSA yreRShQQNZBLK6wGInfjoN/YEallMpkr3dsFHBrO/MQQhlfyn+uLly6SpDInZsFqIeZHKhJILZu UkJ+TWhxCnvXdycngwoJiQh1CQKsHVcvvNAAJYYC4QvnQodmEftfYhjSI/KgzBVZuPNcQCKVRfS oAXU6KRCfyEBcdAt1eP4BljWnI/0Ejz98LMyoogC/FBq3gMJ1pHcHzEMvZ6zZkbTts/Hwca66sM 2ZBdPRdCDByazoquHrnTnZOzGBslsw6yVJifkV0KwzT/jZ9+qQ75F00Dko3QoOLgNwJtaKs7j7o 7Gv0OIgBcAeW1Nuasth3UROqjqifZLnq72MAW/1dMqsm7W+02D19gWtKFCz+y9u4no46Uvi+rT1 jbSq1GdWS7tRR0A== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Now that we have dentries and the ability to create meaningful symlinks to them, don't keep a name string in each tracker. Switch the output format to print "class@address", and drop the name field. Also, add a kerneldoc header for ref_tracker_dir_init(). Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 2 +- drivers/gpu/drm/i915/intel_wakeref.c | 2 +- include/linux/ref_tracker.h | 20 ++++++++++++++------ lib/ref_tracker.c | 6 +++--- lib/test_ref_tracker.c | 2 +- net/core/dev.c | 2 +- net/core/net_namespace.c | 4 ++-- 8 files changed, 24 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index f2a8ef6abf34d89a642d7c7708c41e5b1dc9dece..f8d1f9c60e86c5a7b1866e1c9f6= 425e99d4ca9c6 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -1920,7 +1920,7 @@ drm_dp_tunnel_mgr_create(struct drm_device *dev, int = max_group_count) } =20 #ifdef CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG - ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun", "dptun"); + ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun"); #endif =20 for (i =3D 0; i < max_group_count; i++) { diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 94315e952ead9be276298fb2a0200d102005a0c1..d560f94af7a86f1fc139204a4e9= 01eaea22c6ef1 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -60,7 +60,7 @@ static struct drm_i915_private *rpm_to_i915(struct intel_= runtime_pm *rpm) static void init_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm) { ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, - "intel_runtime_pm", dev_name(rpm->kdev)); + "intel_runtime_pm"); ref_tracker_dir_symlink(&rpm->debug, "intel_runtime_pm-%s", dev_name(rpm-= >kdev)); } =20 diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 2e0498b3fa7947f994de1339d4d2bed93de1a795..bbd5171ce0a22435e540f10821f= 2a0dad59c1d2f 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f", name); + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f"); ref_tracker_dir_symlink(&wf->debug, "intel_wakeref-%s", name); #endif } diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index ddc5a7b2bd84692bbc1e1ae67674ec2c6857e1ec..cb61ddd3f770a118f3da5d22f98= ea2a67a43c6b2 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -24,7 +24,6 @@ struct ref_tracker_dir { struct dentry *dentry; struct dentry *symlink; #endif - char name[32]; #endif }; =20 @@ -48,10 +47,21 @@ void ref_tracker_dir_symlink(struct ref_tracker_dir *di= r, const char *fmt, ...) =20 #endif /* CONFIG_DEBUG_FS */ =20 +/** + * ref_tracker_dir_init - initialize a ref_tracker dir + * @dir: ref_tracker_dir to be initialized + * @quarantime_count: max number of entries to be tracked + * @class: pointer to static string that describes object type + * + * Initialize a ref_tracker_dir. If debugfs is configured, then a file + * will also be created for it under the top-level ref_tracker debugfs + * directory. + * + * Note that @class must point to a static string. + */ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, - const char *class, - const char *name) + const char *class) { INIT_LIST_HEAD(&dir->list); INIT_LIST_HEAD(&dir->quarantine); @@ -65,7 +75,6 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->dentry =3D NULL; dir->symlink =3D NULL; #endif - strscpy(dir->name, name, sizeof(dir->name)); ref_tracker_dir_debugfs(dir); stack_depot_init(); } @@ -90,8 +99,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir, =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, - const char *class, - const char *name) + const char *class) { } =20 diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 5e84e5fd78e147a036d4adb511e657da07866a55..5fb384dd919e1f1ad632eaf595b= 954118bcfddab 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -123,7 +123,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *di= r, stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { pr_ostream(s, "%s%s@%p: couldn't get stats, error %pe\n", - s->prefix, dir->name, dir, stats); + s->prefix, dir->class, dir, stats); return; } =20 @@ -134,14 +134,14 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; pr_ostream(s, "%s%s@%p has %d/%d users at\n%s\n", s->prefix, - dir->name, dir, stats->stacks[i].count, + dir->class, dir, stats->stacks[i].count, stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) pr_ostream(s, "%s%s@%p skipped reports about %d/%d users.\n", - s->prefix, dir->name, dir, skipped, stats->total); + s->prefix, dir->class, dir, skipped, stats->total); =20 kfree(sbuf); =20 diff --git a/lib/test_ref_tracker.c b/lib/test_ref_tracker.c index d263502a4c1db248f64a66a468e96c8e4cffab25..b983ceb12afcb84ad60360a1e6f= ec0072e78ef79 100644 --- a/lib/test_ref_tracker.c +++ b/lib/test_ref_tracker.c @@ -64,7 +64,7 @@ static int __init test_ref_tracker_init(void) { int i; =20 - ref_tracker_dir_init(&ref_dir, 100, "selftest", "selftest"); + ref_tracker_dir_init(&ref_dir, 100, "selftest"); =20 timer_setup(&test_ref_tracker_timer, test_ref_tracker_timer_func, 0); mod_timer(&test_ref_tracker_timer, jiffies + 1); diff --git a/net/core/dev.c b/net/core/dev.c index 380d07bec15a1f62ed27c31a6e211e74f3a5561d..00776cba0276554066c94a6fc86= f5ed4df430cfa 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11620,7 +11620,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv= , const char *name, =20 dev->priv_len =3D sizeof_priv; =20 - ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev", name); + ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev"); #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt =3D alloc_percpu(int); if (!dev->pcpu_refcnt) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 1c5e0289f0f0b37c61852d95d4e11a8c12a868f3..5b06a0bf88e62c19f6f610eca3a= 4c4750ff4a2ea 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -324,8 +324,8 @@ static __net_init void preinit_net(struct net *net, str= uct user_namespace *user_ { refcount_set(&net->passive, 1); refcount_set(&net->ns.count, 1); - ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt", "net_refcnt= "); - ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt", "net_= notrefcnt"); + ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt"); + ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt"); =20 get_random_bytes(&net->hash_mix, sizeof(u32)); net->dev_base_seq =3D 1; --=20 2.49.0