From nobody Tue Oct 7 18:58:54 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 3CE4B22DF85; Tue, 3 Jun 2025 11:27:27 +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=1748950048; cv=none; b=huGc6EnJd7Sx55qae5MLwQLHZk2NABeu9uK9wvSFe/zDgQgEQjhTXT5HSHMd9yucAzAtyn4PFZ+UUzzLyVXxJInRs0d2NgLMPnu8jkf82hCq/YCLsLQOYutgsityWR3rOtGM3gk3M+7UnjDTUERvIz7/FfCRM1ryVwKrdFwb/oM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950048; c=relaxed/simple; bh=kh/qFeLAyxVm0bBT3X1rDJqrmW5QgjHwPovsCE5exFQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oul88L6hoRgBsfHG+A4PopdUQoiFk/Rul5KTzzk425Sy4bVC5l6K0c3CroIdIRCJ2Ap/KwDfnelqGTVCr5vTI+jkLMmyXziw4A0gwjhAz/R85PhFlbFZzQYHw6Zea272xHCC0ccitK0Eef10n7d6zuu6sPCE2u1gaC8WFfCt0G8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c5QrsfOG; 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="c5QrsfOG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8DA0C4CEF2; Tue, 3 Jun 2025 11:27:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950047; bh=kh/qFeLAyxVm0bBT3X1rDJqrmW5QgjHwPovsCE5exFQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c5QrsfOGQY+gEAwvbnNsbvn3UvRugqgK8a5A7iyVNZ46+pKJJafVSF1zWUTRQKfWm ucfYMSzdhxQMy/dIuEl3LXcELGRNZvcUYdW4/ioT1VcpeYwXFVY7FKmRmw1dbuV1vs /K7gaSjlVPGHYQADJOt5xDmhmrgANz4juJR3DWIg/eMMTnY/kt9NK8xw0leDfg1bf1 wCHHJGValI9zrfAHSaytAYnqoc9n4oeD7RXpUFuLejCFXK6fyB1ZE7bqeKPn9hp7WV 6SWZzgpFCfk6Nu5UKjMg6IFCUj8V2QGnubK9MRJPkTZlyhfYQoTGPjyEFizNu7SQok FhLoXRkvsrrgg== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:12 -0400 Subject: [PATCH v13 1/9] 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: <20250603-reftrack-dbgfs-v13-1-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=1888; i=jlayton@kernel.org; h=from:subject:message-id; bh=kh/qFeLAyxVm0bBT3X1rDJqrmW5QgjHwPovsCE5exFQ=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwZnmkzfGyqcDCu4qlCbcxajRFYjJSU/wuXi 5lU4c+zT/SJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGQAKCRAADmhBGVaC FStMEACYnCVo1JiKF1YdkJU5oZPfFXF4BX7UH51WUluPdvHF+un4833ejyLd3JUpMs8Nse3Z5Ll IOCON2LDTSV3vaRtqaxq9NF/uJerI9c9z++/F6YNUyPyPIZ+Pxrab79rPJIZT6Sfy4LRyD1GENm NO8eGXBdjxTsN4LxDoZYCj4MEpUVsRgyE7CVKYWc57Nefks/1d4xlDHR3Rw6RpPXnBEInjxnMgo RF/TG5iRYuCjSGieCqxBFFuWuOhCkOpdXBNKXf3KNuMidEkwe8JH9+gV2cWGKi4SzeM2BILOy1V w6YAM2eghUIcTyVssg1LauEUjWOal5gFrjmmJX1IspeHvPq/o9eJouljSeivVLOA+Bo3HLx3xef hexuO8L9xuObnTa4gQ0BL0PQDA9XvGqiHMg78gAYhwwdTDcTozlnOHCOvHCFxOYjUfcqP7MZVoV M5aSWNh5upcyYV02IW9o+LxdBPOP1tyypL90msJSadSUJqH1ab2a7XQyDKK5zS/lk/CO+9k4anq f6kvnesAxB1zU2kC+Zx36RfTw6NS1WgfrW+9Oixe4rRl0WhGeB+loJuStOZX/T/uj6n2s712k+X cyzff1pzXhtQRlcfvHyJ4f58RbBCRuaXrIDqoX7F+XhV841Yn3Va6eClJB8DvgkpNGHgN7wThnN ryZ52HNaaiXos9Q== 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 Reviewed-by: Krzysztof Karas 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 Tue Oct 7 18:58:54 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 4FE4D22F755; Tue, 3 Jun 2025 11:27:29 +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=1748950050; cv=none; b=gfHENRcNFlGEfKCKrkySWVRVVjgrZEDSntXrZ3p0STLyxFQyD3W27n2vNLAKx4eI60algrmoksejo/+1GRGdd18HSswSai9ieYDGpX4n+Tzwgq/TThrYpzMxGPUwVuAo8PHkvJd0XL7k9zcMBD8CvasQir/AzjFQdcJKmtGGTm0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950050; c=relaxed/simple; bh=Cf9EAXyNK0VxD7speigkvYTyuNOgS7Co5M1zyvhQst0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h7gtZkNuCgF0lTy3GoLaf6VqMEcTNsqkwIEdAEnPTnmGnpBptqsmG/HgknLYPefLAI/BLNn44qOg3ZVOn0EuqkJTjpLtXtbS/puZ3lml0QxdvI+nKdDJ3iVKwTob+3T90aY4Kf82sRcoO8IcDXByikhpe1zG8ZrIQz9EoAWZdAA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Py/Jmgqk; 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="Py/Jmgqk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2C4EC4CEF5; Tue, 3 Jun 2025 11:27:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950049; bh=Cf9EAXyNK0VxD7speigkvYTyuNOgS7Co5M1zyvhQst0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Py/JmgqkOb39XX7aOnjKeJtrVFqeYG6+9c5cJ7LVV7AKNvrckJlSA/Ry9XBh6A8I4 JfSBX9n7OmuSCJ+lypFSLt9PgpnUgP0ZK7Vy+3jTe8ndko6BHtuBK7LHuL+lckmCza Tr7oiz2Q5qa3aSv/Q5kwg8Trr//65TYZryVT6SX/0epqilxNASYte0VERQap9Y5Cm+ 5HTpvZvg+qnI2oxqfMlNgNklC/8rx9+YXdEk2poSeFHrS3INYKDCDYtfB16T5D1rtR 3SyPbI4AQd3E/mztM74svyYxKPQEz8XDSaNof1tVgXBZu4+6C9TpULtdOGXiKe5Mgb Cfa7Mk93Qh81A== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:13 -0400 Subject: [PATCH v13 2/9] 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: <20250603-reftrack-dbgfs-v13-2-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=1088; i=jlayton@kernel.org; h=from:subject:message-id; bh=Cf9EAXyNK0VxD7speigkvYTyuNOgS7Co5M1zyvhQst0=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwZH3X/xIyqMqoat+1/9unMcXFV0vU7LgWpD Pqub1sJOk6JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGQAKCRAADmhBGVaC FSfmEACCmSBnXr4xYbvixs+pUwJlKBT58lsHhV6RYOcn5tP9HY7Al/oYQPQ18JRwPadpO1UrSPU v32uOfK8G4avgm7k8hK2SEmypk55haRkNHFYZ05Mx8pOfcXlEzSJd8+l4lOXqck0PAJB1nMGXCm OyY8WGM4wBsEZMugAyJGVe7vPXwx+9Yiy4rOwUqrDRYgX+hUvnSCxV+GffAzWgfnbyhR6/V56jR iG7pj0xW6Kx1DL8l84OEh+d2n6LcMPKOkX180Sp/+6riKmTZTYtmnsLCTf2cSUwiHyO81tyG5aW iv964sWd5yL7BczsRCzaOhs3M8TMI3vwsDkL4yvCUuEXSlckiU6CcozuJqXYx5QKjsA2RSeu0Ih deNoAVmX0sBUrSRTgpJ9Ud1KXsbN4Jah3Mk+vs7Lo9cO/vWc6nPssjesdbAzMNVDOIwB1R1wVGL 2jERfOOYDSf6qUUFrkcIKbsZUye2xJO/CwEsdW4noCZL9fedNS75BEaaH4PG5T0UHUDDgtfjfdW yotBTiM+RA/4pN4oeV0/WXtnGePjny34OTxUvZdgQw0F1z3zWme6FesX3NgsfMcqds6tsjIdqcg uu9NvdZhezXf5E/fRvLlvd3PTR1hdbHNdq/QWojsUujbHwPLR5hwMIbQR2WfW8Rk/+i54ml5bwb qVHiu2mOynSJQow== 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 Reviewed-by: Krzysztof Karas Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index de71439e12a3bab6456910986fa611dfbdd97980..d374e5273e1497cac0d70c02c28= 2baa2c3ab63fe 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -273,3 +273,16 @@ 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); + return 0; +} +late_initcall(ref_tracker_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ --=20 2.49.0 From nobody Tue Oct 7 18:58:54 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 5E193231833; Tue, 3 Jun 2025 11:27:31 +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=1748950053; cv=none; b=YgIQNrUUwPqrCdh2OHO+i42O0asmnl4IHxHGB4HIpxXUhaqFW/i7U09Zod6VB8GkOI+/OgiVG17Sw4yjDTXOBrEKVOkHC3W1BLaOJSZ8bKJi71iq5vhPdjgZQnQFyFRbnLBUgzkUoyvTXLVP9QBsf7A+FJD39wIOOsrUXpj8nfQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950053; c=relaxed/simple; bh=TA7LFTdMJDELDuvkJuuGw4yjXy1LcM/cr6YWykJIBfY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gSv4RzkRW+YDra7GUHt1tu29l3dUecgfI/3bt/t7XIaiYslzC4E0J4IESMRr3R/t4bvekYf9xjQvYazljpn9V1nS9YIRfQEYxt4odxCBrPPfA1I9ypzDWmayqGMWtXfvIEFLiKucHJupfvbOF63za43bGqIJfW24mgWvh4jkMig= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G81lrSHQ; 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="G81lrSHQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05619C4CEF0; Tue, 3 Jun 2025 11:27:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950051; bh=TA7LFTdMJDELDuvkJuuGw4yjXy1LcM/cr6YWykJIBfY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=G81lrSHQdo/W0nzxCgUM0MKisuhe7HBw4WlRG6zmTYHyJ1YTDdQjJ+3pw4V385LQO n/3ZDa0SgFb2adlvfGaEu0iQKFPzcxpY1eOydz2axsiao4l9EP6Ic7epZ65VZy/pa/ qrfKwqPWlcgR8zTre8qslcfX1NN6y6vMnB41y0toOkfzQK0Es2AjRiYzGN1u/93meC pkmVR9CyBawmsmKMVVtkv4n8ntDvbU0wVFTFIuC7bfSBBKM12ERKBr4Jy0lLszs8TN Kq3DnMzb9TxoRZjzfLM1+vBvL1zCWa4htrT87GEJ3+hTqdfS2/yH81p/3ma6NZeE2j 7m1TwVKFiKDHw== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:14 -0400 Subject: [PATCH v13 3/9] 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: <20250603-reftrack-dbgfs-v13-3-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=4259; i=jlayton@kernel.org; h=from:subject:message-id; bh=TA7LFTdMJDELDuvkJuuGw4yjXy1LcM/cr6YWykJIBfY=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwZ+tL2i3R5hAyydM5i/kuA60e/ElIYMt91Y sMxZE//DPKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGQAKCRAADmhBGVaC FdU6D/9qcbCXT9wr+e+OXqUUvsx3fD/74E7NP7UFhRiY0HOqGNpce6AcyNeLuBoi3ZH0OK4owzC SxtmD5r/fliPqJJSDciAiXUMx2bfKphAaBwyIZtXGuLl6VMSHW5DUQGaYuKEjI6kp29R59qS8t1 OAN/RbZaNB2/FEY2MxXuMa7F+u8JZgp6hnUHE4gm4GjuPzDHhuSuOyuV+8QNg4fB6erP17ebczP x11ce2wOTFrvzNPvrrL1wX3giPTw9nKsQ+f8Af7QSeNHB5hxDawnHMi+eFKi1PyySaOCAPEis2m +129ZsVi3T4Z0yABASsGGFMptn2g58o7EpRK8JGDMBdtGMJ4lDYJvCmXJBjjo+FARfCWp/KMWm9 2wRc95cs/bDJ9Ri2BaXKjfejBCDo+xlotvDIKs60fIM/XOR73LCM3EPa2AJDNb6OG/G+vhJWl5p JZSM9EmUB2UQEfa/HgsUAIKL87fAU4eHk8qtyW4BrIRIjdFbVroOcRFaKjXrvMV9ADtHnRbnI37 0XrhytBs9a+1In3FbR+3pSZZuE4U8vNG07rUjAVjjpCA3To9Jzk7TOGHSl7CXY0IaOXgUR7TBLO +hTZZw8HupF72GnSExPpo8YCeteW8a2SnvkDoAJjEm8YiphzpW2ek4teBI1lp9pmCcgRC3BUSJe oEvAOxPH+y9yyzg== 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 | 52 ++++++++++++++++++++++++++++++++---------= ---- 2 files changed, 39 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 d374e5273e1497cac0d70c02c282baa2c3ab63fe..42872f406b2a91b5bc611405cae= 7ce883fd8ed22 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -63,21 +63,38 @@ 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); + if (ret > 0) + 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 +113,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 +124,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 +142,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 +162,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 Tue Oct 7 18:58:54 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 70EB7232376; Tue, 3 Jun 2025 11:27: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=1748950055; cv=none; b=lOxQP3SVWYd8/7NJwQlYqnb/oCsG+3vlCXFnjXW/wZURMMDPe0WZ3I5tWP8dUKZicMY6iI3PgZHBSh7lxb9jmAHVs6K9VyVTKNOZo5nO/grCJU3I5JFUf/ZtJdtnOfVfVvpa4B5ONuGocOlMtVM5+5eYbDBRHFyDf+BSJcpM7QM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950055; c=relaxed/simple; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hw9y5ZUQB1oDCdJyE2I5d8gTxjZCBLMdOnmqeeTSuzRr+PTngJvP/rqHkPKp6eFdB5tR/MdTPq0hcz/fGu0DRS63DnpFa3WTC9bFNNQJ9sNIAWqhFKKN2C3vGSuhpIVHkO0PdWCZDX/KcBx8uQTxUpFOXGwmw5k1NFWOPqjvJbs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aOvVh4pp; 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="aOvVh4pp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B720C4CEF6; Tue, 3 Jun 2025 11:27:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950054; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aOvVh4ppwUUSmAYBDnbt29krMdbdbaWjNvCsdyaQ+tArexX1PEjT7S3sIl7M3zkud MqnuZsLkI7ZzXz6v0LJcPzEVeoF8f0sX15y/N5qFXIqcA5zLHnmKCoQ8uY34cVl7Fk ugqkZYJLA2jFgR+niNrUCDNVfM1yl1X+eF9E34Vi0RGuaUyF5aJS1ydtXDdU3IULkE HcjCa+/Bw595uCWY/vlhWostfhW7SlnNtEVK4rjiPTQszMwvGep7FBdMtL7tO/vHS+ LVe6w4ZW92t3ao48QWfKPQWxMP9W+3a+MTM9MbcvjWxSarBBSbVxAnTkdwee5CorMI Lx2WQNhyjMvUg== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:15 -0400 Subject: [PATCH v13 4/9] 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: <20250603-reftrack-dbgfs-v13-4-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=6203; i=jlayton@kernel.org; h=from:subject:message-id; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwaD7eBe0kVngsa16kqlskkSTfWpCKHX4jLw 3/940UglTKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGgAKCRAADmhBGVaC FVa6D/9cJV+3Q38vcKMHXmTrGWs8rO+Mg99Qpu4HjPpE15rrYvV4DgtJDR1GKOJsRiGFQSc6te2 Skgq9V2qmVJ/NGI6zMDuVMYXv3m97D8RRdS23HX4qZ6HO7Fxg+IpK8jrXmxzUs6wU8ZVYlpogQy gS5w5K0Xxf9OAuxjRbPeroHMkiXssEpobTg/GeKPSXmRP2WwdoZB58S9Qe5huVww4kDNAX5Kie+ tYHzbIdPbgrbSrmcFkkVipWLYXcmcIjpMah0JtymiOLj0prb2+uRsaIo3pr2CzjGg6oieRYCDv/ QaYivSVcWnLPBtjYk+dJ8/LOiwMlIZhcs9WNMzy/xKpyRtSwN69er4fzkbdkviuJdD271GvxpiW RDxuSZMnuTYoFHQ7OPp4xJTSkAYFy0ZiKpb7q1lE1HSeuhCycMcGJ10k9Rv+h0kTZ8OX3SFVRi+ LspvSGCt6DMnK56kt3gqTl89ZFKBxAYXsDtsvrEcx39+p/bKtpoq9WfLFQ+u+OrqHCnpt3aZe3r 0tMJTF+KBDEzy62qzIN9wriH/ToXcTcxAlDq7dSn50z/URHZJuZNhBNI6ELO/PWSu48trb+RHB6 DST5zMo2ZTWFeyi5QYjLw6xtPz1eRdBnv6t7AC64HBGBEvCfkOHSoLfYzXaD4XS7mhZt+vWyhUP nfvIFEsAgpIbLxw== 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). Also, in the i915 driver, gate the creation of debugfs files on whether the dentry pointer is still set to NULL. CI has shown that the ref_tracker_dir can be initialized more than once. Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +++- drivers/gpu/drm/i915/intel_wakeref.c | 3 ++- 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, 14 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 076edf1610480275c62395334ab0536befa42f15..b9c12b8bf2a3e400b6d8e9d1841= 45834c603b9e1 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..90d90145a1890bf788e789858dd= ad3b3d8e3b978 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -59,7 +59,9 @@ 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)); + if (!rpm->debug.class) + 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..21dcee7c9a659ac1fb0aa19f301= 8647be3bda754 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,8 @@ 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); + if (!wf->debug.class) + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_waker= ef", 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 2b514d95c528b8d6da8f34a8955da76117958b63..eeb6aab16987dde277314d1a6b5= bd32eaabab893 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11714,7 +11714,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 42ee7fce3d95b5a2756d6a3780edba070f01ddb6..8708eb975295ffb78de35fcf4ab= ef7cc281f5a51 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -403,8 +403,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 Tue Oct 7 18:58:54 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 BF6F923315E; Tue, 3 Jun 2025 11:27: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=1748950056; cv=none; b=bHURoyf1Z/hr8/+xQl6hL34gItLgFngTxfn4oixJWm+iwV7lf5ERghA8sJdBc3ni14HpvbbtGgSNaXSy++HQUEpebd0UNm76xi7iQzs0pMZBctox0ruT1lhUpXdA89k1h/O5sNXakxhjDXkgDOWd33/JGePOZcXyt64KPCq0wQk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950056; c=relaxed/simple; bh=fIUtfKsTxdswV0+z7NV6Nx2ljCgH4pcViNimfWT3u1o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QIgg/2j4TbQoJVzBa09OXwlr8LmrZAqbnX6B2djBFJHKUblsvYd8dXiK9KgIZJhJb2RS+JV0fgqBz5/e3wMXtmeqFkYFjVnLb8wNC4rrHXDfe5OWTgAKFh9rkS+EMs1SIRrcFgEykXaCLm75BijEIdr6DSDeaHxRetk4KJWE4Lw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hZ67idAk; 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="hZ67idAk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 315F9C4CEF2; Tue, 3 Jun 2025 11:27:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950056; bh=fIUtfKsTxdswV0+z7NV6Nx2ljCgH4pcViNimfWT3u1o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hZ67idAkz1Q6WEjCvJXL8tiUJJl7YaEYyEbBZuiihtliUd1F0zKdiG3j7C+knHL6T MGcArYUs+QlL/jtLXLwmL7/SD9AV4YVT5uuWSJftlZoJ8hxJw/SNFfQJDc8GOc8Qs7 cL8kTXvoo6PTkj8gMVJsl+WvFDLcD6JT/72BMaZIVcICtZPSuRBm0TG+vtHCVIfdE3 vTAe7l2schRgJHCJoBmXCpbNtjgifEvPjyvPApxH47a5AIToOEMeNlguciFYHbm/y1 8B2tC09pehQOZK+N7NyDdF51sjQlA4lxNvDFT1IEVyAz/RJ4FSs+rHwXnHUVsQqjxM EFdxNleToic8A== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:16 -0400 Subject: [PATCH v13 5/9] 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: <20250603-reftrack-dbgfs-v13-5-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=fIUtfKsTxdswV0+z7NV6Nx2ljCgH4pcViNimfWT3u1o=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwa9bpttiNqpcPN4Dy+8lJv4cCAkk+aG9TvK wIKUa64/syJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGgAKCRAADmhBGVaC FcSOD/0XA5UcipIKa/Kur3XJr6W8uSqfyPG2GmcQickNUCE8HdODpm1TkAUo47yCmvNl5qZqln9 i2It8fvz1p5bOCyJZrbnNksGeXCCYdhc+tl19o+l1un2lTYDblk6KTo4XzyPGy9LSKsiTVJSU/c bHiDY3ilrllcFseuJ1N6INjf7aS++IR01NAzzIaRDv+E658gSc3ZSEjfOvdSulSSZuNRQE1PHpx TchJMTUtuRzR4qqu9VC9nZX06GaTAe8mlpai27RYDH/OdkBb/dYFAC1eFK68C0df6Bi2Qsf9pSk tCL8PBQeD6mlz9T5s41VPKG2fQuOMlm8MjAT4Jp3FfoGTTxkrC3uF4bNV+bg3EYONQD7rJeSSLG Ng5NlhwhiQRYE30KNBzfaLcheaRbEA5ckNinxtPWj3M9RT9l3GxXJDOskm3yUd9+jRsJ3AMkjq+ r+mGkPpVm/MiGhqMt4eDi2XIbfMzsCCQ+6OcqwEp89Cv7/wp822ZwxbmCOUrSBTTOB+HPHMOv1D +DOLOBylfFEiG2tUIpwl1eM4r6gZ1n2/gOqZKUQJG221UvfVrJqdSmc678XONHhwy5uJ+LQb5gr ex3YfG/Nsxksm8CiNsMlx4md9Wf0ktlCptT541Ex4XRk5vsK4S9IPaph1yOyPqy22OASEMWdkly btSTkodR2Q7Xptw== 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 42872f406b2a91b5bc611405cae7ce883fd8ed22..73b606570cce9e551d13e65365a= 87dc4ce748b13 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 @@ -301,6 +303,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 Tue Oct 7 18:58:54 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 AF30F235041; Tue, 3 Jun 2025 11:27: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=1748950058; cv=none; b=W1DsSxZAUnKtYDcNIUqkisNDP2ucpGrsD1MhXuogeAyafvTzOJrwwamI4DqgOj1WagtkNlVDugIjgV8ku7B3CIJhHWZ+67LSZnrmO1D9+CEQUAwR3z+8De3JAHMeSQcRxX65HuG5DIacQyVqVfbilIb1udldKDjRcrTR1QXSrZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950058; c=relaxed/simple; bh=/4XUanQr3dtXch1jS1+MbQ4vITu3aT/L3H7R+wdmTk8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=btkuZhj3T4WREeNFTr/2QSZUh0oVHI0vkPs+XBMAaO7xxgcpm7Bz34/TRiyJRv43Ww/Unce6t87EEwmiENBbCH37HBdQFTucm3DMS2SHV8BpaGV+FMzF9CVk0eIWsHlv6pXvGsLu8VigpyUwXYFWuLcUw+6WC6JSvGOKpJUgY1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=efGuqJ2w; 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="efGuqJ2w" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 486DEC4AF0B; Tue, 3 Jun 2025 11:27:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950058; bh=/4XUanQr3dtXch1jS1+MbQ4vITu3aT/L3H7R+wdmTk8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=efGuqJ2wINw/hL6CAAeRbUaKtwFgTJ2ARB5GYjCy9OrjVHjb7eLM9FJ7kzkD59hLs p4TNs2zuopPAB/FutfyYkr5HhSmuMY2APmDNwLY5HsTWIKDTERst/Gp7NX2ez4eVWW 9IP9QIQX+Pb7+0fvwjHY0Nz2dxk3YPr4BIhofVQyTAgX5rKCGbpZxLEIFZTbX94BDW TS+jFwEPHr9RHQywNb6dwp+VT0fT/SDk+NLCJMosbFQRzfFo7p8cV6bdalwoEMaDlO zLxgiNruTKlUOdTcrqVZsDGhQUHd6yZ2tAMNVEntKgfAw/hI1Yuw3lrD4F/GIZEv1i gb5lks0VV654A== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:17 -0400 Subject: [PATCH v13 6/9] 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: <20250603-reftrack-dbgfs-v13-6-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=5401; i=jlayton@kernel.org; h=from:subject:message-id; bh=/4XUanQr3dtXch1jS1+MbQ4vITu3aT/L3H7R+wdmTk8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwa58WQOMLsiuhw9hcWQ+44cbfL6LBzXvJkL 1GaMfoPlO+JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGgAKCRAADmhBGVaC Fa76EADOSgKvTkjLpr153FebTDCPDx9ER/qDqrQfl0qgrb5AXsugT22YFFlycjiY3f7E2nEvbyV RCEvUabBVKTQvzPnz8pt1/540hm7CrfU6lCbk87OnvtQiCZiv8n5MeX5R6VRBxWGLZcQ3/7R5Jo /MRlGKNQ/QxxTYuPLIKS6aIBWdriR87bq6MakGFKjBqDtTRJoYJNZ/I1YPOV+AW5Q2o40eKvd9C 1w881pu7Et5aavC9kgQAdQuM/fOL2mOt/lSMnUrfePVGP51bXHDoeLIaZU3yPi33S2NyFKvvjYY cVQd+5jxG8Z8CncuNhy1CMpn6jteAvHnSySAv40uhFw4xUE8/n/F4+sDeqh4p6GvmpxpDWZSDO1 B9swjwKoLfHxOvQOPdvXG36+Q4HIrZxgyuALCUQYdg/urOy2qURxixW+odLvvXgRQRJe+4MZxjH QESGBVe5T3VRPF3ag/K/Hm8ErseJJ++NNnafkAubadH7CufSGUXKnmh2b4kruwNtNsMI9VO0Dg+ X9qKt1XlVaCAvgsY2rwYpzvoZbnVwcJY0RrLG1G6QDiCLNK1SShG1Lu9yM4gk5g9ZakULxeAW5q rWWTnC6yVb0zKuB82ISlMy6d8s/crt0z8UMm8ko808Iz/mbWOHM8rrIzRCjJRQ7UNQ/GHQlCBOh WpGRUNq6hGfrc2A== 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 | 67 +++++++++++++++++++++++++++++++++++++++++= ++-- 2 files changed, 88 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 73b606570cce9e551d13e65365a87dc4ce748b13..d4c1b1bae444debcb15ca20be39= e35d25a7604d5 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) { @@ -185,6 +193,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); @@ -312,8 +321,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 "", @@ -327,6 +335,61 @@ 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); +} +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 Tue Oct 7 18:58:54 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 5C63E2356C4; Tue, 3 Jun 2025 11:27: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=1748950060; cv=none; b=YFgRe4G6DewwbIyzjSokz/A4YMifYpd/f/H6l/LKZl41p1InSf5AQE2CK1dOZQIGeVWF1yA6f+vlw4Usf9HGG+rPwJ6lqQ0tBPXmAn5acQQSDIwQ5s8zkQ3FqqsvnAZbsPSYd3/vQatEN03p1SzaE2yWke/+Zc5urdZ68Qq04O4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950060; c=relaxed/simple; bh=qsINcmyRJS/rIXB02gJnsJeatb4Kiva7Sr9N4CSqWBI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TA3Wr56CBI7mc9WnandMnYiagP+xWSqOhLAZOQy0jvExdFq7hraLcSH5z9wS6LXLFnfjMuOqoyxRD6ZnmFvI2VqmyVFgTE6Fwivyrysso3wgiqYs5xx5IiAhen9yr0nN3SzuorpBMcB4LIp4/HLXko4qHNcHvBt+OT0QuzDMaik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HOOLH/os; 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="HOOLH/os" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F181C4CEF0; Tue, 3 Jun 2025 11:27:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950060; bh=qsINcmyRJS/rIXB02gJnsJeatb4Kiva7Sr9N4CSqWBI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HOOLH/os8P9KPgDWMwecLGrib1Od0uhBpJvczPDdyRXQNUVrnKl/xsuH/tW4KAVFV jMA4n4d7AHTMS423g0UIIaHw7nMIKkp/D2Vj5Wgw2Nc/RlnOB7AQAVyBSnRlSvuFm6 TS8ySp54pwlJ73dd7UShI4IQ7U0sZYMRIa5yNHxXmcuAvNsCmWK4j3FWmnmBnHgWFl Zq6B4N+phqOIw5gh0vzwqCsD0cMQ5SMM2TIO+vvJWJ4/cvpqzXU4L/pjHV3I0jDCHb av+mFciz8Xu1PKjkqSumS1ZCTwtTYHUtAVr6cTHcakn74whgh/hbK5W8faQZKn5NUq oayoP2XMVL6Sw== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:18 -0400 Subject: [PATCH v13 7/9] 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: <20250603-reftrack-dbgfs-v13-7-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=3044; i=jlayton@kernel.org; h=from:subject:message-id; bh=qsINcmyRJS/rIXB02gJnsJeatb4Kiva7Sr9N4CSqWBI=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwaZNFk7Lyny66oAt+EwLN9ptUuT9lnz0z8B S1BqrIUsPKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGgAKCRAADmhBGVaC FeiZEACLNbkqaUhiBGStZAF/Qz5Mgq6iIxUH9BbApYNRQosggDg7Oq5+RKSXYrlUBuN7PgajYqb TFFEdExexPq7Nj+0lmgPE0hsLOLL3fStubl+Vvl4jQjQAE/nBi65JfEvjGBHzhzrEB0se09P550 KJdvT/0e9k7jc5+MyKTkzrRmzi3cfCFwsguLajldYXF4RqA/sG61wA2KiNRrNwso/6KBeEN5q5y FiqkIv7CKUnibgdYben0SjEjYX2sOicvZ3H0wUd2xN+cbl9Gqw0w0FcRvcvVuhOWVPmCzigsb+l RyITNWamfFU6LO+UwDu4QM/Wr7oFCFVV461o/xSfPT4kLmtbRvveUaW3a4QFkFd8hqhT8OKlbiI 5ttvCczzlgtVYFEH88nvImVQUOthPp9tqjicNL9Q18+0Mm5bp43mLArXrWXz+b2yYV+P4tDr8vl c5MOU1giB4oZ5fPmxAOMVBAOm/kPvRJAbRga+4OU7uIMkAF47BF3YHUvxQheVRM9pc4JcPWoveZ 50PfYM31XMS/U/n5d4ym+cO+aePnHY/N3ePObldPwnxzSKAslwnHE/hO9jiEKpLd/TUq2+Myznw 2YwI+5r1DZ8GPhzwAmJgGqYOi3I5mWIrDA4sWYowj1GZTFq/KF9li7sMVwTDTLsY9Xg1lpEtPBe C1HbJJKnmOvjduQ== 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 | 22 ++++++++++++++++++++++ 2 files changed, 35 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 d4c1b1bae444debcb15ca20be39e35d25a7604d5..920538f1d3e9ee94acf141d1813= badea59e3cfc6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -385,8 +385,30 @@ 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); +} +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 Tue Oct 7 18:58:54 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 8B5C5236A79; Tue, 3 Jun 2025 11:27: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=1748950062; cv=none; b=gsxRXx4Q3jkltwxH+pziL7ebLSJ/OczCmY7TLv2WiGgafnxzlga836MeCR8nP4u/Qmsh1uQ/J0Y56YNFRpwhtHo2hDo1xD33Ce2pTQOo3DmV4D0AKdXXc2AX/x+ldA/X3uBGRf6lbIRakr/Miw/X4YmklNPT9OrLE3ziukjRY3w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950062; c=relaxed/simple; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Rh3URRMdBPhRlqyiajw2wFGlS5VIDq3PlyJqoxeyBctWXfIQJm9ywJl54ovT2OcBW8saWAr6aTYLCUPhNZguhq6IO+P15GfgPjxtiD37ok2LqdZ/MtklHGh9kI+r6cOrMc6saffutmaXaxCl8/BjHg9KLke/a56qV4Gy46cTvRY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nJWf9PqE; 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="nJWf9PqE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77930C4CEF4; Tue, 3 Jun 2025 11:27:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950062; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nJWf9PqEnvvty5KAcKmlN+gkgwCN0pRwDvUNlP/s8LJeimjpochQRjmhpblQs21qj UMrRB+Yp+bEhCOd6pNKooz5fDGl+bTfP0GkfD3//TUHuzii0hy30L+cBBdh5WkzUtc lwURWzi4/xjLBnqN3RjMKDPvxVqMPSu+YU2gfT3Y1muPT7AG5reR2pbhYLJHEcydD7 LEfFVgtwkpd6hcqPrIWNJiZj/xWcW1YBkevQ9i1+51q9eVQflfRyV4zU1bKxCYHD4o KcHT05jzWcdzV3YBpd1lvtIo1eVSdB/ghWbakGddINUODqsJPSLJqwbtXKDdkp6p0/ ilj0aa+DtjJhw== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:19 -0400 Subject: [PATCH v13 8/9] 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: <20250603-reftrack-dbgfs-v13-8-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=1850; i=jlayton@kernel.org; h=from:subject:message-id; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwbkd0+Vc5/RnhkEbQLT4EKS5SAlBOjIR8p6 BRo+WaHO3aJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGwAKCRAADmhBGVaC FREPD/9x+zTUX2dX1RQhNJM3fFxh5Ld2OWYtR6yA38853uwtfD5KYH/wclEWNZhqqLAuhBSkbI0 Z5G2lVl4J77oUYo4qNWbj8F2K5r5POTQeUd1gAhmkS7h7jIH6VzMq1gaOp8+ye4fkSLfz11Iv8m JQthJknt7p+JajHmnbdTz6jLwx+eVrM2uXslX0zFAB+40fQyXZUlwwI5aA+FywvXze5seYOAe13 H3APF9c7uFgrm8uT5+I81NrgDdV2SP0cAEZAknaTgsZUG5YLoVnBmQNdBjhMYBRohz5t8w4Xfm6 hx+bXi41LnySkKb2WAgPwgWf7Ey/dHIBmL2+f2eIs9uxV2/Bi7eMtf+bGu0Qya3+w9OWWwJyMnH M7o3vIXk7ZzSugtviSLHxvX0cwpGMXHaPOGgAFIHPE3DMyJeCyNSl+XBPqHQxiN1UYgA5gFfiOD wwrZ9va8lfDOj9n4V1RSrH+x9L0+e4V/OJt2UzrH64wO7NLSInCLNWwdkeq7cEOd1/5QLFOSg02 Btf+yYu7fCnr0GA6wnT79mrYKFefjZ2TErUn472EQkIkQCeBLwRcvlDWFxSYqG1icOO2zi53NQ2 Q8FrtNw5N0chfEC29xvMQOqyNG/pdBjGS2eNPLbcKzTW8Go49U+Bp4aXkI+AKU9udDUcDJrc22b fOe/pMX2g9cQ/iA== 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 8708eb975295ffb78de35fcf4abef7cc281f5a51..b2fd9c5635ecf8fccd48f1d5b96= 7a5c6c41cfec4 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -791,12 +791,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-%llx-%u-refcnt", + net->net_cookie, net->ns.inum); + ref_tracker_dir_symlink(&net->notrefcnt_tracker, "netns-%llx-%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 Tue Oct 7 18:58:54 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 EDE7F23817A; Tue, 3 Jun 2025 11:27: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=1748950066; cv=none; b=Dft/iKkiz2hYv6XaFra1620Ach2Ws3ZTiY95H2/OrX1/ZnjotJOOYLxVeWa6kbPsgo6syRYNhdXMnGGAF9ERrx/o0w3kyAZe/4Vg3KF2XCxHW3eVDlXuV/FTsAAFM1DEHHFV1kpXsK1nHrhTROg5Ory85GJz7xONfhe66upSBAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950066; c=relaxed/simple; bh=f5ciAUv1UREHj4iW3L7CjNpj/HfjYcnH7MCQgUPOcfs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KqtBvDOHd1XvMhatnOk7Tp4+iPwxm5Y8AsGq/eZE/lM1682jacNhzuy11dvKdshdWqUTZfj31qCmwajkgXDyiRTllRp6UUo1gCv/cZBnAGiFVz3iBfu5MmVQvvvSk7vz1RxQWoS6svfUXRjP+M6Y3qhT99C79RC6A4XdklNdFH8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eWGvXW7R; 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="eWGvXW7R" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F7F0C4CEF0; Tue, 3 Jun 2025 11:27:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950064; bh=f5ciAUv1UREHj4iW3L7CjNpj/HfjYcnH7MCQgUPOcfs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eWGvXW7RDB9AuSwAcvUEdmAndtawToGO2+6jOb4wJeLRo6EuHUe65B5ZVkB+bpnq/ 2ZhYe8y1TmuJ8bAkhdJ1hxsNVyYRPA/SGz6DfqnfkXyG/Vnv3xSfDxwuWOsxX+sx42 AX6woPT6UUa0TuZ5ytbpDUDgchEdtIuomLa4S5Kv/FGa7BeOAQrtlnRAGnXoMmHa9B wu+UPANIu2/bYeCSXqDc68A9gNodusX9Qg5E9C7yFRIKA6gz88icNs7nT4hQ1el0T9 0AX8gBkbzLXSoTKrauGtslh+itfLPLNU/71oSkUFjNTBTYyj+JmZU5roTse4TIax4j jZdvTL3/uxdug== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:20 -0400 Subject: [PATCH v13 9/9] 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: <20250603-reftrack-dbgfs-v13-9-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@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: Krzysztof Karas , 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=7441; i=jlayton@kernel.org; h=from:subject:message-id; bh=f5ciAUv1UREHj4iW3L7CjNpj/HfjYcnH7MCQgUPOcfs=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwbreEeCTyxFX4pdMR+K22EBoSEdbGexdMTe mcveIlOY7WJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGwAKCRAADmhBGVaC FTy5EAC+23pjzEaPjiJP0FBheuZUcxBMJ7qv7i8l3onoEpeB3TPqBv8hvVPKwvU+W3yp3dp8GOI aitKcyn6jzLfrFR04LTfzJ3K3jJnoqXJpiyEKuusYPC+uqXPzwtrzs7GpXp6GkzEd778S1imp4j bxRN9LVwiIK7CoGt6iq7ZN/lLRRLWkZTKy9M4NGMdKzdqFD1f5NGpRIuwjh1Y/iwaFbYT+UGclT 39y1brYHqOQ44da87NbMxUWJCI4ojotHJ0YkwPTXHwEvSW2Zo3O3Fl31gic9GrkRliw/qCwZDGZ Y+EGnk1StLti8rdkdp4m93VDUjEswnFO9RFgCOJ2Tng9CtFXNlKHO2Eld/giVEQ7QAz1divpS5r /NESOVhluCJ1CjgqAEqYKbMkDcf75fs9qVHWpDa507PoDDVD+HEWyJ7aOtT/FJlhK/GlLy/Bfhw FeSBRfFTapQCW2ZzPrEQw0iZtYtQhyC/WmqCk4PWAFWmeTmW5HAqXfbYoxeGLm9wLq/P2vt52h9 C/CO0n+lEGbX96S4dUVTM2QkKZhve4XTUVusDniQ6Rc9ZQViAkb+kLprCoLvRbsjRbm+v9vgdzg hAmoE+cJpeIeNVHjHItERxoLaz0uzHX2ggjHav8tnOHM+97ljqEzAx/Sgfvcv4hH2x3u/7f7C35 bFYyQdM32Tk90Mw== 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 b9c12b8bf2a3e400b6d8e9d184145834c603b9e1..1205a4432eb4142344fb6eed1cb= 5ba5b21ec6953 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 90d90145a1890bf788e789858ddad3b3d8e3b978..7ce3e6de0c1970697e0e58198e1= e3852975ee7bc 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -61,7 +61,7 @@ static void init_intel_runtime_pm_wakeref(struct intel_ru= ntime_pm *rpm) { if (!rpm->debug.class) ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, - "intel_runtime_pm", dev_name(rpm->kdev)); + "intel_runtime_pm"); } =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 21dcee7c9a659ac1fb0aa19f3018647be3bda754..080535fc71d8c25dcc848eefd06= 3361bbe21b305 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -115,7 +115,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) if (!wf->debug.class) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_waker= ef", name); + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_waker= ef"); #endif } =20 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 920538f1d3e9ee94acf141d1813badea59e3cfc6..d522aa151c016e94efffae5877a= a800b9cf79510 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -124,7 +124,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 @@ -135,14 +135,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 eeb6aab16987dde277314d1a6b5bd32eaabab893..c7c25278267adb338f99407abe4= a62d2a9cc3d33 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11714,7 +11714,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 b2fd9c5635ecf8fccd48f1d5b967a5c6c41cfec4..8d21c8f4eb83597ddee5fd345b5= e38b308ce0335 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -403,8 +403,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