From nobody Wed Dec 17 08:44:58 2025 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 C426E23504F; Fri, 9 May 2025 15:54:28 +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=1746806068; cv=none; b=qjKo79CfvnOYxIU/uUcNxvASIEVfqYxErE8ziY3UbtREGKkOQp7MGVVOIa8bdAeltjkrT1tW+sxFALbe++j5YU0ybN+o5+Gql/4PZEFZIWmNoX/bjBe3r+LpM6o7g4jEmwm4cwntArH8bpzAAWZ9VFxJjJiCSZthyZpBS2LGhRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806068; c=relaxed/simple; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mVQTvklB/pOsZ9c5HvpZSLvdfTgv2TW+cEI/YuCTBEOX2jbPmMjZVBir8v8Dzpo3LhDC0HXp0itvENDNj8jr+Pu0GyF8NPZSpPXGo9xsnYoZ/ekGcPO1QTqvQ5QgBUR7kMoCj/kizrFe7umxDyOeJ979s33co6Jsm+IAPik0cqs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J9cTpevM; 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="J9cTpevM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3CA0C4CEF0; Fri, 9 May 2025 15:54:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806068; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=J9cTpevMeE9DUwzeDhXL+BZPqj3KtV31YnVmEDsUK+1xpWfE/fYrAVPrcNW5iYXKe Q9xy/GHJAe6UGpdJYqsygcA+Rx4G68+hzdhPgx3+2UfYdFcTaBQuXR4FQqZqABQL+M gwEzt7LWUMW2WisEKveO1S6SSP/GOP0eDvdqVZfp+S4z1nPUwktPTOPSJAvqtp6u7L gfUzpIy5H+mO8SQ4Ge1MiSjgdZDPGHv0vWCUVlZXQcD310VTEE+Dp5SnHRlZxvYt8h W/3IidLvZSVOnf9oge3o2Kex1UZydrhMot7E3N9/K5hHbocRKsspHU5k4tC2pXlBKq rk+1IVInwsS+w== From: Jeff Layton Date: Fri, 09 May 2025 11:53:37 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-1-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUukOOKDIb4cF2s/YqNQegK/kh7hBPmE4loG newhUZ+3/yJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLgAKCRAADmhBGVaC FX6ZEACPHYtl2ZkiY8k+RhHi4brer18Cm8cAOOgH/A+9UgPc8+IhZJFoG5kJKEFVTCyt8FpADtB +MGHt6m3HNeRsfPjMrHDfMpQ0w6j5tYsww5+7UEEErTRGPX0YAp62OHq5S0ZBokBrluc2VdxuHK awNvFgZF/fkuNF7VJec3NYTDXac3pSSqsz5IABuQ4HpGgZwENhzBzr166eOOlXFflEmc98N7Pyl YDiOjyA6oardTTOaWIgAD3jBcu3GnfcInCD2paXLI12KC9sRwLq6FT31a2PO+GcK5+liwuSgGaw MEKiNpEkTyy7eMfcMAbbLopp0qNZZlJPikul9xSkZ4/qxPiRFEag2qdFa134f52fr2w7dDyeCCx tx/9LNh58nEZn8677oXlFaw7ShI0uGCXEBD4ZNmko0vuYhbCL+WnGOpbev/FtU9gY8wpLGnaLBL bHanoDMqvaZ5curuuFXsz9GkU/W0Ns8fAc81w0a2IuB2e0IzECIyzygdv0bDNQpbVqWJmcwddSO 7cGUl90IGikoohBQ95hwfN/+eCfvJXGV13b8JQSZTZ5bmJjOiBLpzh8qscEYLH+7+yM9aOAWeOc nz1fBiOHzWMWILY2K8S0g1Fjpi/M0ip+3wkUMqAyTfkzXt/eDG7Nz1fqili1vqlUVFqps5rnl+y yQ4SaCgy2PH1GjQ== 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 Wed Dec 17 08:44:58 2025 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 1BD0B238C2F; Fri, 9 May 2025 15:54:30 +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=1746806072; cv=none; b=MMQXB+Ux32unRmGdM9PzMRkhwpOaJsl/aBbNOJ+r+6+EMSIIiFbUL3Rk88Es9pa1BRDyGs8psDmwlL2vVJxbeXYIjq5tl2vAVudO8KNXpj67EV+aPbHUmFw7xeHqFLl6kXG9TnapjjIrCI3VazLwmcxoIMuNG9SFt5SEn/WvGWw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806072; c=relaxed/simple; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rC15hrJfPI5X2DpkTKnmrQslMmhirKSCid64vgbfToPeFCWIPB1+nRQPwDwy8artvK4My9svDzFR2ht9vdKUISEiCACHYo2bhT4jozrH/WRpXgZClB0EE2JNMJnlhv+FrfLX33b3LfHp9dTURAMr2fji8m9L2+U+xft8wbLcuKs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=g88zdz3q; 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="g88zdz3q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF1C5C4CEE4; Fri, 9 May 2025 15:54:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806070; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g88zdz3qfycUSPF8fcFoQsSFCGQrrZNGmffLzaoSaxHrtIuPahPUiW1lE9FeaFlC9 PVbycfySMPUtdOdkQHHzA0BdKodnvQWV2gKOI+oPpqo6BIBxg6H/knk+R45K3vsFft yWf+7zUM8Y/QC8XMm33emK326dyqiqrnRIDumZDyeihtQZQq8tbziDXCDL3m0nwo4m 9ELl4zi08myvz4q04N4dhfwy9JGVoWO+MzXnnn5vgf1GnbicJ5JT8SoGOfs7KrzMoU V7oYPZsZo0dCUnr/K3U4HnLgUG5kbX0FSDWtfeF6d5xnxzLoEcWNBxbWsb1k/vkswn ZgcpWcngdGGbQ== From: Jeff Layton Date: Fri, 09 May 2025 11:53:38 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-2-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUuSHanXz7A1Ilm2bM/zNryrFCG5d5XssAi5 bTRecqbRRGJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLgAKCRAADmhBGVaC FWSNEADGUHGBJlbP+lSQMWSbujQFrxCQUQlG/XOq6ZeOfhBtZyD0pvT2smyjryOOhnPVbxk/kx6 9CYmpuVNYBYkEREU1ucURtaS6i/VVwY3TnSxh2g0wdjmaaw3XXOJV1sI/lrveWg//k84fzB/pEt 63mG9CqIrsPepCLTBHZA65Q3syMILqHYF0871uDGvv8ik8lsvAEgICprbeIWJ6GypVpjnIav5Gt VGPC3pn0MUAedmjFchHgoBqurqub4JMeo5VxH2JNu+0KZDbqAXS+0qmQlhM0j+uejoc/Hweneo0 +bd3ejsBxmxSAxu1kjDyxZ92cA5n0N8eBr4XSv6VLVJMVgn166y8+XUbC+WJCp+gbJUGocRFP8R bZ+s2ic/BRSUCmSaCG0+y3thioU7MmmBXXoS3BDDLwIAgMUoWemTVmnCbhd+QpvpW/lZS3Tpw9W 0IkDQbCY8wNjCUaESq/C5GfIVH+KYFeNmiCVPCkICJ58IgoXrBUv5qoh4ICYcf890JXr126q+Fc 4+bJgyFXWY8Dv87xTZPTmCuC3lQ1mss8LQ54n9Pn1PgVVorVInEFkzvWhXbjH59sHeI3JO/Ogne e1hvr52FMKTmrrf2F/fmednW1aaoUhOSYDiSulw+wr/i57UXm04UWjbOZfKv6sKqy/1AaLQcupP FClonXePgeB5TfA== 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 Wed Dec 17 08:44:58 2025 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 20519239096; Fri, 9 May 2025 15:54:32 +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=1746806073; cv=none; b=nzRZwiOmu6/K+fooZZS4lyanGtyj8GPuEcPC9bx9n7BODcjwbvAcffsy72l5Iaalgv6S+cOwtu825RKOZb+DaJQt9DdaCymh3hGNWd/Z+0UNAyQAErH/yQTkKEfXdmPlSBZmtzoeGcWxPWAoF6QLfrIVAymDfkbtxsXM9JMG4es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806073; c=relaxed/simple; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PZloRxcPNR2IRvNucw6adOR/5fT6UEwcZtYUiqF2M/qpKBtgoerPoBaamv4qtTI2DllErJg79GoTl3xTCkt4zTxo94DxkMdInCHmDafL8pskhpwUypQb3Tc7xFJ78RjrAAqLtTjvL++xpxA4KKCJHt+zmy8Y1s2Q5gVz0kud1bQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=blJbBGZl; 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="blJbBGZl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C8D24C4CEF0; Fri, 9 May 2025 15:54:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806072; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=blJbBGZlbVe/Z1qy8Z3Y3v54wvg0wbaEm4Zilv0BiBuVxsTplqgYtrNksZuUuOSfF aIL9FFUhxhWCng6qFBvJjDF+E3w51MHLr5TCP8GGs22iQeHGbqQ7lqVpYgfdRpGhDu ORtyOzfo361x9H946PHUEQFuI0MV6Bt7VPWaVs/KUzLzx5NG6bkXHe2m/tGAyJ8axd uDqFCaz+p7IGr5+YN/GNf+EqoL2FXGaR1jrJYXEHCxjYEN+hOX63FmecDgWeSNo1zP siZzByFkZ1xGuAIa8M8NVNCsun9owLSzfR6QHQq25qchxKC78uWmv0Ll3HAZkcDUHD WwcXcshDcsL0g== From: Jeff Layton Date: Fri, 09 May 2025 11:53:39 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-3-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUuWhoxCBEpB72n/4e/EUzY2pNuIvDqSMshL uK32GMxI1+JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLgAKCRAADmhBGVaC FV3dEACLyIDmGtCpTrVgq8v05y9ny8X7TcKpv8H64O1hmizVTSOSzXlfyjBbz7rsIK92Pkq0rcv ryhDiqruL4zhKhJu2TSE4Ax8SRnKGtEEO0N63TQ4P9bqxl9EzCvq/rSDc+X1CHT8DVZxxFQrWnH 41ICG1hTB8rCcFf/dbl40M4548aJxYxbjnT5TSW1+JkRmcIF3DMxQSaRwGr2sE2kLTH4+/aKIFu Fv8MSJgDdiGWgKAag2a6yFop61leCL/916AEeMxS6GSgnBqs30YVS7yRnta/ONkLJQJWlZo/FeG FwpxkIovLzUHQJ9lOQdXj2A7Ls4q5tTelJwh2LpsH7nEGz1byQDFkKJTZ4dVNt5plYIUzkGjoHo kaGwrGtx+I8vf+dGYtTxSMFxkxp2ePP97Opm00ZwQJ00YUlfdaf1ruo7lvnESckltCM6h6amwuz A0hocimBCngqZCm16++UqkFjegU+Ac2+pD7Gy1f/8Kileyl14P9C2n0LB9yVHaYHp03Cg67bbxp uU2K7PzC8U0rXkXUKn2K3Se1E6KwNdLAGK/tESDmBAi5W/lJ8L/hrDOaXNZCMKYmjCY20WuyH30 C7uryVIOtxdpAZf8ihUh5iqEaPOGWevRP/ZMvMYG6E+aIZvlht4shHaUMnAcJXG7xKR0+GKkPsz VxfkUUwBYz9NdDA== 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 Wed Dec 17 08:44:58 2025 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 153D0239E94; Fri, 9 May 2025 15:54:34 +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=1746806075; cv=none; b=nHROeexMNaZaz9NCNJ5r/SI8K7B+X1t33of/US6wnRyhHmjCVVkPgIS8Vk+r04EzdMpBZUAnWX/tPML2Ac27q4CCzOfdyEDGJJYvYUZftYzSu8fkUNMCgruQ/aihqP+6dyRDZw8e/a6F5iGhUvQ8xAsAbxEm6E009s1py25gVI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806075; c=relaxed/simple; bh=hjRJC+ai7FiQIRoBwApJsexl2tKLt7dyencvNsS2N6g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UR2v0zXZMCeWrJQxZ8E2aFUyJtM1xBuvnwpZvDwNL/bSlNWB/hsnE4xq8rWaNoWufRzHMaStOp+5P8CPQKL8xhfx4yDZwq6jNZqe8N0MUNKIzGgPjGmLsanaQaT3ZYl48LjawEvu2hZd0a3ZcUGAoj+6oTpSZX/HEyo+cWPAvRw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=g5JtAocV; 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="g5JtAocV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C217BC4CEF2; Fri, 9 May 2025 15:54:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806074; bh=hjRJC+ai7FiQIRoBwApJsexl2tKLt7dyencvNsS2N6g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g5JtAocVr6AcfL6ALKR1W3mvnbgHXSlDDyiEoDbasHclIDFIJWdVI2ZdrrTxuWfKn pbtfX1+5lh93dcYl0QBMOw2mLZMSSc/RxiWGdsedsDUcECWfKUQOZZSnwEDlORZq83 91QWClOi08GT6Pn5ncMOF+s2eu8rktCLdZ78A87XlfR9GQPFAhagwN3CnJEUoJaDbK Ttt0kEL6/DYKTrnaqZbVfBuGa5D5ahSEEk2OYNYqyig0Huc0wbAr33+xfJGwNOA1Sc H/+4qaAJVb5HRpOdWhVJXZTrbiexsINA2gV2jKaLtajApsAX0yVFjm5iHK0T8lQ1Yy kgHQtcQXZFabg== From: Jeff Layton Date: Fri, 09 May 2025 11:53:40 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-4-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUveKte6/xoagWZcgpH8xxuHDPiyf8bg/Ym9 XqAdciGnZGJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLwAKCRAADmhBGVaC FfMqEADGYmp0itJnR6x3kLRaCHJ0q9UnZp8lj2zKx4StOi9fwJNu9pj1Dx7zSBxurU/P6SQz7Yi LqZGH2xdsiM5OQtjYpVhDcUTBAPktkRTnvWT2GdLAxWTPpqJLS4C6202DnrqBRatQlgn82KrVqT PDCaLTO7tsHvrFvIec7pwHiIJort3lkeayLa6k/roBIdQ0d9hMeOiCd1ALVLFUvS+YNunQ1O9Gn 02yvpzeQU3OTA5JPH4vP0lIO+dPOvZmg5r6B2Ecox5UeNzmRnNUCaW3QPP6Nx+7ByLgtxdphYiT qIyfb2T8/Croz0h2zy+Vn+8yuRAA+zB6cSW7X2AD363ECLlsQGg2+zFVfVOOHs68U4blfU46Lbp zgsXCTdsEiCM9MHFpR8TX2C7Il2rJzNKju8edGWB8UrYL8sEU3mzX4AcpDrgG18ChbkkUEqDdn9 /tLa/VezbJXzZSJZfRVlvOLrw4QAkyZO0Rasskaw2/4M7kLXA3+OHTKvSo+ZdLKfPU5vz6n7hA2 93VlWnDfz+KEavKz0o4Y/jA73247Zg6OHDanZv+MFY2mDqm+N7yblQZwLzd+YMcMCWqvKps7cOz YzA90GhQDmx1wqtw3aPTsgl+5dFzoUHhjNokfsEl+pjp0vK/iGOPzfk45SeWNPRPeLhOnL5H5L2 zl5uBy3bIi1cU1Q== 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 Wed Dec 17 08:44:58 2025 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 0C39323BCEB; Fri, 9 May 2025 15:54:36 +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=1746806077; cv=none; b=dVVQCrh19xEzy/u3ZtVMaocv0j7OCWOLwssCTR4lJnCKo5s+zxw5DXA5XFJhvFrX4jL2q6+/THWGGVWx4HnpXf/59ZfNFH5cT0QqELQZEpR/NjcUytSlADO3wwKMMSgBk8ouqbalyOVnHqKYur9EYS6Uo8QVcVzJ5tIpSe1ebxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806077; c=relaxed/simple; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=II/iU6rti1qK+noeWyaDiGsBWGDNd0HLdWl/JRlRRTHmzyZxFfJbnggA6dabGMiMjS1HlFjfA1PQmWRvpJKf2Hwn4o+s3rECsXmsULeD3JnOT15OHukdBAstAtClzdBtyNFhC4T8mdOo2Wf6LKoHjaL7jZ0uXHqJTAxtnaxcxBs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FdYc6wGX; 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="FdYc6wGX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BC809C4CEEE; Fri, 9 May 2025 15:54:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806076; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FdYc6wGXzjoZ6u3vXZIf8g6zVkhBwOmJtr+YkHPGfu2pXxSwrdf0zDYW7d7m7iitj waV+8VU0TT10GfWvRBNc9HiHZWEDAthLOvDPreJj/3BQLO6TvZMom8LvoNHPfvyO5f eVV8lWvLqWNg58rIACQPnyXehErbQWLTN+RhqRk9Xi4etyg8uGUHZsn3Kg5WgCPiNU y4BsBhsXLniFjZNsMKhOUncqNR2ZmP5c4+IQlEoaL5OTT+RKzmH9lfS74r7/NCcntt 7Lb8rS5F4c4Sq3iB/N/GhWoEoPj7oY4WjjoC70Wvn51NJLb8Gr0JnM7XvF4VjjS/pY bIVSmglofuvQw== From: Jeff Layton Date: Fri, 09 May 2025 11:53:41 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-5-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUvc6qXkXEuPAP/QG0yVt5dTxV6dRCnl6RMT ewbnZ9QnySJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLwAKCRAADmhBGVaC FRXwEACOC5PnMHjcA+Xp+51Azu9umR+YbygrApiT3qtRp7EMUbqeTPyHk+9qW/icE9JtjXoMbL3 jrWIAz6akpmLPl+wAIbL67qM3T4OOZ/VULF5sieGn8A5J3O1kUknEWKvTOHtE2n+OAueBW3/0HO tFDYv9hue2fl3vh+Fjhr0Ei3VgHfYChKiyiTDdOb5DnsHGzNd019ste/UZb5j92vRtwYbD/JEdr DEq6I03hXkVV8QulIk/xlq7JfDfcIvcjWlsXa/KgIcdMH58Rj12u3HgdP6j15JeWs+yphZ+IvEz c3R3Gnchejk+DcWnTMkrFdvSGSLpZpsu00Cy7mgd0FOGoXj/JldcIF/0M8XPJmJDtZGjBtM/WgT WvRe43Av9/oBAZu88YT6M/SDRqKpCebRWPBrLo4LmPU+T37hO1BsrKGgfvEb2gCMFQI4pvmNzH4 wtiKOBSV/w0ZLTMLkn0VMYEUdqNjEN+T1ByyOJANm3/YUZsmJH0YGSqxaGZw3aKN2/hdpvNZHTr Q7MOm8mbwymR80YSHK2EK8Jbzda+Xc+nsRTgC3dIXhrPOaDkgY4yNeiXCNNsRc5+FVaDEEaTU4X HnLpTTb/Si5Xso6PPx0wPCi/AxjGoKaE5YUYM7mOz2aRDgpxmRaaHRbwGS/Iz1pmtyQHop8InA6 Orr6HaJTc3aKo7A== 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 Wed Dec 17 08:44:58 2025 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 A3DB923C501; Fri, 9 May 2025 15:54:38 +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=1746806078; cv=none; b=QULo+pmNG4Cz8NS4BP8iY0QA3HjxNwpVRTh7RAIwnTalbjideGNEq6nTCn8x2UrStnRGavz+PifO1uf90IrBpOdV926hkpFvLWV1JndepkmUHgCZ7/H8FTHytUZG2663xOsZmtXmM1hpuH6brK6fiVoQWio7w2ytp9shHLH6u/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806078; c=relaxed/simple; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Mr4jfzwZpGl4ORboHEOvB68PVG5yfPfni1vV9sjfC9jSFDw7r6fRd2EACvq2beOabHrFahdLRpqJlNVINz1/90tQFdzsYQt86GMY2KlfcgqBRC4DuRfSW0dkHj0mMcONcS2ohInxTzSYDpx49Z1LgTZf7nTNaVgF/n1Qayp5VSU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=m/+EDTfC; 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="m/+EDTfC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B75CAC4CEED; Fri, 9 May 2025 15:54:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806078; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=m/+EDTfCY1nsaLR1undiooc39pQe/V3hFU3bhaBdM9DaSUGQ+Z0La/Jj7EMAg8O8W VZYB0AFElEHLkYp+utwcfHkRzl4bHkzg2QIUyCnyYztoRsi2u1FIQe/qC7GJjDcUlM D1rHrllVwEmSojaVKnbAdPMPpCem94rxxVK6TrcBcZpF+teZ88y0XHiNvmFMYrso6w +34fkZOJ/vthrWCNL6bPmGfc6vdCndNkPj7vmMKKu1WARPsXu3xGoDSS2GAFkZ9bFs einzhrXdz2XIMJc8cL8cVlMA6hg74YL2/3LQ+Cvtk97efRs6jt/YyHSqgEmw7AiHJl p05E0cSnE4E0g== From: Jeff Layton Date: Fri, 09 May 2025 11:53:42 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-6-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUvabZB90uKkmdA4sFkccVytpoiZvfWbFXD3 F+vQJrrCOiJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLwAKCRAADmhBGVaC FRhiD/9LBPhMfPBUCm8in2RIzspdtzQ+jN71wP52LV3CXR9s/NgRC2SOhkFXZu2IcVdjQz1h+JS bKBpn4olHIIqBqAq5hrGxvf1n/hjiDiALLukkHtMRCN7b9A71Hok2WPcjE4mjnt9tmtkE2JHe6J ytqoGbMhS4WRh1aWX6zb/SCcbLlQwYta5jaGiGeAjemc1oK7NUu9cOxtxXSu/xyGTsYliG7q3Wv 9zrW9t7R1sSNIjmpIrB9vrk2XzRqA3WN5Z28v/bjygjWPmC8nHgKAtP3Bpje2E+c0ipEcMTms8X VtzYophLaEHP9rZxIm8OXcnFpJFTCpNmMuuPmECkPf6ewjmLj13bF3unIUNqVDovF4cd85tCJG3 Gvw8FXZnDkMUi0H0y1MUuK8L0suSqVJrShpMxNrPLwqFF0ErsUp2xzvGCFekx06CSCxoRsXS14A fF61oOdcC9PR5N2zOzkMYxpgjTIc8bsn0filocDC2EbC+JBVOzSXYTDB/fw2jySplQTWPKoFYOC 8vy/fuY9FowG6Gcv7mm3a+k1S6gogOPAtsYyHnDy5JYKJkORSRlO1fcXxutwqp4bQSszxIdHWX6 1FTLBnRpz7hgc/V9eIzQO+omv/pSfp5wYH9DCH+lQHKfH7MXVn89+kDOWrvkAsHuBZLhliXK4kf Jn3pmmSg0Ku2abQ== 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 Wed Dec 17 08:44:58 2025 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 0A3742367AE; Fri, 9 May 2025 15:54:40 +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=1746806081; cv=none; b=MM6MQcUW9suoU8S4zML2cv2HY+2nIcdlEncMVCKIO+AXP0POF+QUl94CW9WtqzFnWjchFLYrTKo4ffDU4qSYYySE2SKRL3E21Q9aaNyvu10IoZ+jI3FA1GUKd42cwZTHVG4ltOWx8/WtyaS1gnN3u4XjSQuSIhAreVcy9mxJ0JA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806081; c=relaxed/simple; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=deoWjH/9nuBP701O2wQmrujuDSCg4YKhHCjVwpgUeQzD8r2PD5xti3aDGe6YkIrL5jjLObnRS/qN4SIvQdIf1vNm2Wjw9a2MZfp86Q8wfHxeCRTLxc1KFu9WzYNJ2yLjvdyURX+UenoakF5L+xoE8X7UVhgQxtvagPO5nLcP96I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OZyDCpm4; 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="OZyDCpm4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B26DCC4CEEE; Fri, 9 May 2025 15:54:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806080; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OZyDCpm4liOBfQXkDwH4iRjxeNZMGFi06s5+CxPYcLn0hX220seVGxvt7xRzYJoSD Cu7ENmiYbdRLjdfTW/BpEP/wzSMV3W1vB8RVpvhU/RfSGReweE/TnJBK1rFbKtBE7V I6TCgprFTFjAcok+Xgrrf7V63/xiRZmH+MY6BYKh6XfCQp8uzzjj5AGgA9fopLLX+g ufXSZhnPSAOqOPNEYPw0h4XuxH16Lo6XLC3sq5A1QiuuCZgNdyRidITmrv94DHQZ7m s/ybbSjUaPZadPJzfxRHjRh9uPqGQTot48ezlrkBSNYHbTaG1/6Rn4EW5cEUXolYuJ Zu+bCWQkZ9xeA== From: Jeff Layton Date: Fri, 09 May 2025 11:53:43 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-7-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUvGYGe6F/cnFCkvaIK6evhIi7cgOPXIwLB6 SkUkRADOVeJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLwAKCRAADmhBGVaC FWA/EACN7jX6v+FRhwTq4/5nQa2FSnYN3+OQoGqWVHWuYVvlrQz5j+m4aDx6OC6IRRUeVITDLCw ky2UrY0PxoSSQhrzm3yGWKk1q6q5U1wy307sGuVjuaY+lL2BTMcebIsk/X54uQkq/EsYYtYWT5X A9N4673/PFXL1IkoMaiEbKL1YPU+dBacK6iKAdp1/sqScE4IeajPdblHS3tf2t2rAep+7CBprQk DbXS3oyvhyDNyI2c4T6fntUHiDYFx+wG5ejci7i7VfYsbEit2WpwFNMpS03Xfk5lHsfYZD79UIN vlbWaSKIrmV3jzwK8SFzkAIlF9diLF2aW+l0X69vU8dOBfr+Tyl7N2R4x9byIQe9b/fHDlstqpD sVsLhE0mGbESYeTbEy1W5/zNzF16ibv03E3s3fWnLaKbdyRu/GUJBjef2zNaBqcoNZ6iQdNmKm3 OQnLT/N2jLh+OlGmtQ39l3tu3XzN3CB4Aj81vvMG3j377GBoI2L83r7esD/bB59T3kSZq4IHGjr 5ErilMCakJcRz1Xg5PB4LWsiPd3B0WhSXiM11lvn7tkl7R4o2GyHpxNcRW8ocmznZV8WUmNPSuP gahW4xtI3W3eV8J+3vt0mwW/UgOSTgEVqIapU5ea29T+a+0B0tKk0Zl7p7OuggGGlaaa/BygBlS U49cU1mwv/0W2AQ== 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 Wed Dec 17 08:44:58 2025 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 0FDA823F41D; Fri, 9 May 2025 15:54:42 +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=1746806083; cv=none; b=Z/aCEvFosw/K801BNla8iiFzmTJMrDaiWFqEo8ovqeJZ5snR36uxLXsognWy8Nw2xFXD+Aqzzo6btQnV5yENmfAkD9J40BPbjxRcxnF0fQyFRtGGHYOL6lYi9tXPtDwTdRgXZCgUh9jYvsurQS9M9kNL/OT/6+1Btr6ByRS8DNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806083; c=relaxed/simple; bh=HO4xbozyJMxD8zWDiEa6K7DNK6Y9m2+KGX7iMwR0BG8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X0MQDdK4xDACk3FDnBy1eA4fXeD5oGSMeKD6svLn2n1nVwAVcMmOJCidjHNtleOYL/5TJlC/vMAIC4zsMTAmfS6Ob3D2S/A5v5bW/DFSWEsICO6cqzBj/o2jbKlf2EUBO7mDoBAriBBNL6oYGUpc3PZRE673w7Oi28nC9nZ7uCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=C9vg4ykV; 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="C9vg4ykV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B16BFC4CEEF; Fri, 9 May 2025 15:54:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806082; bh=HO4xbozyJMxD8zWDiEa6K7DNK6Y9m2+KGX7iMwR0BG8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=C9vg4ykVk4V/bn+FJSZiX9or5Xb2CHkrni7GKVTaFnmmp6cfh7WxTdJ0bqVaHL3ic n1h7lsP7MR2PehoFh3opW77CawZHHzUVBvbig0mmgRNv3YMOqqXjIEiAS7G/0G3dwm FR7sd4oRwzEgdvpxAeVP+1OatRz367Zl5J9duMLnULJdnyCHisNz17nDHB6rYq1Ia5 QwSNefDUKQ1n5wh4lnXifUxC6R+p6foyXga9LP3KN0/dJnd92xEqeAESNMxgTwSKUa vMDPdKLsuVR4ZvMNJzl2IeMTj6JwTo8kfSeF9jlxNCaNIExLaIHvU96ehgnSqh9LuX 0Wd8auZuoDo4g== From: Jeff Layton Date: Fri, 09 May 2025 11:53:44 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-8-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUvlAQQocoaJK/ytWY/RnDG9yXvfUBn3xDsF ODOiyJTA2GJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lLwAKCRAADmhBGVaC FaRrD/4tuPMdB9+m+eEEjmwxR0dyUaU70WNTU9byec8w0ld0DuH62XIFK2JLglAzCmQM8QtTw/z fVkO6dgPCliopqLtBVQDnsF69XJnIjQ3Rul61w3uCkCWlmhCgKzhRv39ZMbNjFHmg1/MTTyInuj 3iugHd9BjQgM2+khIARWbSYM/q2m8GUspoa1MHaeDHGRSFLT+B9eA6tT9yZU2KgfIto0ygP40TG GwHpq6Q5VVNQ6Gw+OxvmZl/Jz7rMQ6mqBWBLz9qdfxFkUDFDxKhbwX1EaAkVMQ8UWYhCHwnjBbk iDdLVTBrwq0XP51tBt6ByFCEDk3spn6pnfQ+/jb+snujC60fbQf7rF5EOFBd2GfjpyHj9thgy5A dsFGQzSzzUl3nllRVEVOGWtvk2ZvgUeEeZPaC8LUS50OBwZ1kQ1ANz8Owxyq2+TuYCa+LK53FlW BtoWwVoNTHK74Si2s0uUvgvEvQ7GumOhec+bOq5WG2m6bseRn81VczY3vqOUcSKtRiTRiEZifUe XSthEU/KxgdrbhbHsZUdauYRrVwHAWks78Gcclw6cZFxRJcKeGpxIhuKy8GfbB5dKuWMxR1Viq7 LSlv/EB2CEyQwFw5GHrws/BBtzmhAI5Lk6t2ecA3V96U04nqgYu0tLEO2Wgvylz7755rexxkawf P8qv8t6/pS/X+Ng== 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 Wed Dec 17 08:44:58 2025 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 05E222417F0; Fri, 9 May 2025 15:54:44 +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=1746806085; cv=none; b=SoddLC22WQ9gXopUYioT8tBvnhUfunz+ZFOzuzIZZneuVpQCuPqDS1nrV2V+0BokaLxqtx3mPIwhbvJJEvgBGICByokQdVdNFQZRskypDYPSRKQ55k+uScj2n6K4melJOFp5ulk16T4IAxq3YnjehSKujtMHU5XM1KJfcnK8wf4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806085; c=relaxed/simple; bh=Les2Q1JDGDchAASaheHbCbzDsZvfcnT1V7XgBGKxhhs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JJzC3SnHlmPqzEr1sgrbrHrhsQELJr+pMGHOqbMKllECd6QLijyZIyBPfyPz9LPYDNmCkmfvT2HXDZ7EWrn1NF92YanvHeyIBQelYD8dsCjVgcAJQ2XDkVjmdW/iNch3h6uQZE7USqql4A7rK6lb/jnPC5GwVh/ai4/u3WBaNww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G/1Z1FF2; 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="G/1Z1FF2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id ABF7BC4CEED; Fri, 9 May 2025 15:54:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806084; bh=Les2Q1JDGDchAASaheHbCbzDsZvfcnT1V7XgBGKxhhs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=G/1Z1FF2sDlh8rzNTtBhbPYIpla0iT1GaPO57MPPrbIvXy1+h38PirspvcoWIyjJ7 AbcSD550VKMMjXQ22K+NyEPy1k6X6sTQY6nVMQ1xc2EKZQRnMk2Hvp3LYJ60UPdovs 4HYXWX+KycCl22/wbaGaWqCXgXJpwtm7Ey1/iWVPwAJjE8BiddUwIKu1m8wythLgWs f7TLz7ZkioQhJWJ9RlaG6eRY88vect+hVl3V6G/7EmYSkth3rbY00yUlyOtdXGc/Et FqkK81zdYkXge/373CLUCNnOdhTxO1dH1CqTXqhEhbukG5lxvpwUFCZozlE9XSaBrj KUqFJau6vZU7Q== From: Jeff Layton Date: Fri, 09 May 2025 11:53:45 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-9-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUwgYXNMuLWTr7s6QnRaLRoXJ0I2i/1kYd1u w+TY6LosRKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lMAAKCRAADmhBGVaC FbuBEACyCMSaZdQrb5+qfWbknXd2TSel14YSmialcBJY+8oYVkleiO28T5yl4M/TqgXhUSuTzJ4 SWSiCysPWTP7wGowlokclp5TRjSjd/sZkhLyGOqpt4nB0v6JgdIeGujIqdVRFrajC2HEjmLwauh dl1eAiZpKv9soPKhFROa17/XLgFlkWNRBHtE52GBpA+YIKRsF/JrarbIXKu+nvhUuOJw7V4EZ2l YZWBjgN6q8O9abfP42+99yycuYjV+kft4+u80Tu9rM46ABTwtTreS7fL4n/EugPIapSbAgy4aq8 OkX8cSYqGP4kvE6soX5mAh6gnf1zoD5KgCj0MRRlHFRNhhsqobsOaxyrmHpndZOGtaW3XOjBAh7 rZKpaGAlnEGjcooGs0FxK0Ml/EN2x+YCan1ywIxW2peCVeipH9PKKvv7gHrGTw5ONXomfDx9UZ+ oiZtILhxYnM/vzkDjFOblcM/Qi6MpdR37hJnXpmJsp7pyICslcMPmLZNrtZm/ZDLxFfacX5SXP7 aCLb5BmBemu5qzMl9OINqd8Sxz4m4oyjvqN/LASHueGnm9QA58lXJJ101Sm7cyGPMVLmpr75mOo W1hjzTVkKEgJLXsN+ZAz1Xa5tJZR/M27GMDuM8tgTIur8DB4JXujXPYz0oV1vI84ykb+MiO545G rpoBUFbP6rgwvTw== 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 Wed Dec 17 08:44:58 2025 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 0C4162356A3; Fri, 9 May 2025 15:54:46 +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=1746806087; cv=none; b=k9w35HFI/28NMxEhJVZ6xG2kXFFBz/9x+CLp6beNEcvgc8rac020RzrXL2IoMPgP2UquVHga9GyA87UmM5YWR7ouxrZFEN7TfTsM5dZzARGzkpW5wuouU55v7EdWmIojQPerHA2h5O83zF7ScOiKsWpvIUy1gALGx/ORiNlVtxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746806087; c=relaxed/simple; bh=U7kTRtDKEyi26UTZypbYVJmh4wa4LgmaBdSpf8+xSlU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QbL9txdg2qU71kJb1shBAzVO+8rR3WJHrm01Gmu58GgrnM9DB4MpO3MuF1KCsTLsGo4qyKcYVWZYbUmndHUryX5EYsouP+LjGrSWzasF5EqFgwawjG7madb/p81T0ZDZhdZBfYAPrb+8LiMXcW9lO+8fjq/D+K0woEVl3XUsckg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ClrPljYm; 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="ClrPljYm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B826EC4CEF0; Fri, 9 May 2025 15:54:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746806086; bh=U7kTRtDKEyi26UTZypbYVJmh4wa4LgmaBdSpf8+xSlU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ClrPljYmGwXqXnD83Pe5KMkCq6Cv3JHy+4PeVZ9LW7q4nQ/7uyVypqq8XFI1fY+pe jwNZljIvtBVXhglIXUiKEFHPJX40Ip/cuvslwfPYeb7yYjskKA0W4aoLMHIs5rxKkL yYxSg5hDtGJQOQ6s0k+PWC3KBrn/Rs2uSBzkaLbFwtzvNlhk1jD6g5nrJzjusivW4x D3ynAB/gF/MjLwnbz/6JSu1Afdt6KUm/eKCE1LCazH3Nbrh3ZqJdsI5uiWecUxaG2W psvmKNW96qpCH1QlBq75MklUczPOSPn575vSrNlMAqrpBCn7FgN7sJGdULdjgnTJPC anSwY/JodVi5A== From: Jeff Layton Date: Fri, 09 May 2025 11:53:46 -0400 Subject: [PATCH v9 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: <20250509-reftrack-dbgfs-v9-10-8ab888a4524d@kernel.org> References: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@kernel.org> In-Reply-To: <20250509-reftrack-dbgfs-v9-0-8ab888a4524d@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=U7kTRtDKEyi26UTZypbYVJmh4wa4LgmaBdSpf8+xSlU=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoHiUwuTNC/LNoDy5x85rg9NT/5Jr8iJxv8nNdi QqV3ruQECeJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaB4lMAAKCRAADmhBGVaC FdHPD/9Kz2fFDOZ0GbHQ+AIsH/45Bjuk8QMpIRGJjTAaUUzTsMqeMqEG0M3s7L25OgPw//f9LZy HxajSiSSOwp7K1HoIEmZuAeqW6ltWv8iMhuVHQVXi7VwE/g6Ramekdgwi0nt4n9Cs8gAE6XV1Ux 4faNZgD3qrX6FkOpq/0lvFy6XcLxVbPs+PPNmv1c4Rv77VfF9Xy+TcmrohK+qFlTv0yYY82Ejr1 qOtENhvJAUftZPpzJxM0FTyMKxOBIMXgZSYBSxm0vpiV1L4mU/jATfq6SfznVhIkDtpDeJu7KL9 HRqTMc6t+xzBxAu1lNCdc8yYQrirLd++CtMDOkFhiXft8d1D9FIBqJUoYoocHv0gK2FuO+0Nqn5 y6eUVXSfYvi5mIlWp5keXmzjzP3/abxgPeexxhhlexVvxpVJZnlFjjR6RELwr3P4+5RFlO08pcZ YYWUr4miY4xG7nFLRt9BiOvzTboC5PZOkFLjH+pWAABKFYe/af24qSQQjtHXjOucSMNlt70rOq/ 0iWYG5/IjZJODZOmbnXArXqoHyd8AS/LypE/hQKcMOdL0BQj6/seWUTQbDaR9hN/pYz4WNUql4+ Evu/8hLhtzTBtuHFrDqHdTXLa3bUmuWeHJADp8WQZZDjeRdGMDT3R4MClhTaR1hP1eC1FQGwhq1 khmJBhE2oO2dTfg== 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..5878e7fce712930700054033ff5= f21547e75224f 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 + * @quarantine_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