From nobody Tue Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FAF622D4D0; Thu, 29 May 2025 15:21:15 +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=1748532076; cv=none; b=PqibYeVVcqxVV2JmFHTIX9F3NcSeOt+oFFJ37x8d4Cne/hlHOo6uJRF1sounCyqDBr8wsKMX6V2rkhBjJroE3bo0GjTNz3IAZXyhIQv9KIVA+dq+3v16d3AnAkO58dCmgWiREgAWgytnmVqmfmwY9sVxWjEtB3ZKbTi5xE2C1Rs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532076; c=relaxed/simple; bh=xcaFZVbsEvJyxxrP8wl5wB3qpU0YQ92i4Uv2VYSOZus=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vi1GY3i6SzXi86wbvKkt1vQErGB5lulPAKLbM6TKUKSNSwd+q7jIYk1GHvj65DucdSlYrghFNnO+n/lh9C7g0GdCTjn6IhOc1Jv3qS/kUQ5lZlfduEzr+t5BvpjlQb2WRB2kHlH1Br1m6NJioAupGFd44VItQ/f0V2hi9OMNWW0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lfblEMqC; 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="lfblEMqC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF91FC4CEF2; Thu, 29 May 2025 15:21:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532075; bh=xcaFZVbsEvJyxxrP8wl5wB3qpU0YQ92i4Uv2VYSOZus=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lfblEMqCGjjntqP+1um0GeeAZzdkRronCPNuG3/9DXO5LIJNOhNuZ4VVN2I2F07sC YkCtPhYmJ2DMIDxIATpW6sIY6TFdhT60csCW5dSE/tpjcuo+n/I5KvCyccBKQqPytp 15VSYU9JQcr++CLxOcAVEOD6zIqYPptJuH09AeCf+dHIRWy7msFb8Hh+JZ+g6C7Zx/ dZ926qDSl4p/Yf+M1TMSDYZQCSrmIR1zRRPf42a9vFoEhQG+ZaUlp5oSx02aBHZzhw grami1z/3sfqW2B3YSLiyBfZYqIKFRDPRk5Bt/Z2DnPFTOL1eX6BG4CJcFqxIQTfSl sceOA9bOHA88A== From: Jeff Layton Date: Thu, 29 May 2025 11:20:37 -0400 Subject: [PATCH v12 01/10] i915: only initialize struct ref_tracker_dir once 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: <20250529-reftrack-dbgfs-v12-1-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=1979; i=jlayton@kernel.org; h=from:subject:message-id; bh=xcaFZVbsEvJyxxrP8wl5wB3qpU0YQ92i4Uv2VYSOZus=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtlJoeQSp7XCmOWB2Q+I8Ys5r35/tdfxUIPx 9Ha6LPME86JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZQAKCRAADmhBGVaC FT0aEACXjOhHIZep0Wr1ZF4on21GzNvpYxrrHMEU4mKeiMCrm6xqX+ssru+3F1XjkLVe56APTUc k1n1cVyYmDo0hRJWKu2iqNtnLuty6OObsOQkWWJZRK2jUG1WiLZZwWNQS61414JyVRfdhqOrs17 stoXxlPAxxVhAgLpJDRy0oj3qSAn7jzlocNK3JbbmWG5D8/mYO1P8nK2jFa2NJKWfPpFIjTn9vc 3Mby8ZRpGykayY8GqnIMVykioglTIR7qbUNy+AbuXk5L/wHF9T5eCvCAwE3QVTGqwG5LPQXSFeN xHPoIGmmIS173L9Ib8CFDPUIFN8BOWo50MZAqqKWEP/l4SgEn6q5MsPfV5L5LYmmzWUSVj8ZW6M 8aJYkO8CTH++vN9hbpOQJIblvWycEr2hznF/YcE7kQSeIsbwM2KEXGHVJ+ln+3oOX8ej2qlplNT vsHj8l+s3U+FYkWsosS2pQEnHxs05mBvNWH4JV5eyP8bpE/0qLnQaAkxpa7ILWYiBkpDibB/PGm 1/h1S3ZPqK0J8mtGu+wflqotjDRuBe+xd1Qwx0euzgigafbL8rB1/z02j2mHCvNUZprK8x2ujOx iM90gyjpme3LszgUslrGFPBzJJwfyuKz2PHSUqS+iztOVXtfRAFzZFAeZbLBE2vY0NCSpDnWP5Y amcraq9c1SB4UzA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 I got some warnings from the i915 CI with the ref_tracker debugfs patches applied, that indicated that these ref_tracker_dir_init() calls were being called more than once. If references were held on these objects between the initializations, then that could lead to leaked ref tracking objects. Since these objects are zalloc'ed, ensure that they are only initialized once by testing whether the first byte of the name field is 0. Signed-off-by: Jeff Layton --- drivers/gpu/drm/i915/intel_runtime_pm.c | 3 ++- drivers/gpu/drm/i915/intel_wakeref.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 8d9f4c410546e4144d4bc8bbc6696f3bd9498848..1b2ad1e0aef7d317f63a23b3919= 3ea81c90401f0 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)); + if (!rpm->debug.name[0]) + ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, dev_name(rp= m->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..3cfd68c98023fef75faa4dd69eb= a55e093130dd7 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.name[0]) + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, name); #endif } =20 --=20 2.49.0 From nobody Tue Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6DB7422D7B0; Thu, 29 May 2025 15:21:18 +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=1748532078; cv=none; b=LaVr5fJcQ5vXcHOU1h603IuMyQAds/pwW+YbTxEYJsYLG816GG+Y3YESC654exz2yr+6UXXakFXz/mv9UKpR3ILonmEwtaahnOToawVGx9UREkz7Yy5CYqtnIHKhAY0vTSRZ8GSL7hDB1OUu5d17hYaJyqSFApU+R7k0s8ZWRXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532078; c=relaxed/simple; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UtOHg2dpYJ9YgpmZ2gxE9U6dSAbpWLZagAkWbKhXXNh1JvlQ1a+Okrv+ICwrzz9b6482xv8JeJMQqGI5tzFnYJTMfVMPh5DKJjbhLzlEHFHuRAbvvr0obh0J8AkY1TDaPtBr05KoSIKWc4FCtu8GOm2y+MjVXKmfb+JflQvNESs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=k+4kriia; 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="k+4kriia" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 042D8C4CEED; Thu, 29 May 2025 15:21:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532077; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=k+4kriia5cmMEJj+owHrtkuoy4E3ZU92L00VRXLDQ7OmmZI/T6SM42hIRfI/yhdC6 a9Q3y6OW8m3YbAkDtHX5ZOdY7kyN+nwQufF7NG1cqQemF6pLGmWZBovwZ2XVwBET0q S4d2zMdPy4cewzvuBOZVb3XJnn9XZpaRKES7efBGGhu0kx6WaqdE1dyfl/U5aCiEMQ lQ1h5q3xEqSEudwWWg4p4Z0jLRuM8CksQA5Eb5j1eqmNVA9TFg1VqTxZpuh2qRHqWu LC/ngAZgWBliFQUfLWcxt1BFsPg+yA4e0wyHUJHz1aeiUr6MAEb3OMYU8yd6zWjYyC 4jt6e3daYTXAg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:38 -0400 Subject: [PATCH v12 02/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: <20250529-reftrack-dbgfs-v12-2-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=kA0DAAoBAA5oQRlWghUByyZiAGg4e2WjZLfo3ycQT1CUdenqoxScpkfK+wIitZeFpDeJVdp7j 4kCMwQAAQoAHRYhBEvA17JEcbKhhOr10wAOaEEZVoIVBQJoOHtlAAoJEAAOaEEZVoIVXYcP/2BT YzbsecTgmT6T/S6gDE3X+Ekx44VdY3OuQXC5dJlhRj5CAOfmF3Hiowmmwv0cpVwNBJ+rmTQjDj6 bSuoFC0kwAun/EyZ13uYl09fQxhtJHIKNCoSOKKQ2u9eELb/E0NAShTGg3+KEkzfXWO9k2YSg2S YGA0HiOEqdKbqVqJRYJk8ROsQmH84txczppSDG1km5aJ6NAzTgTfsJIbD3etJ8CHo/DMj9Et5C1 cMptRHiTexurW4V94FVLda4jHSCzXcnhCujs+ToME6tlDJwNWIbwuigR5XGZTz8lwWxrckWmsqK +qEcJZ2dN9rbeQfTOD+mIwhHPivCZ2ra/b4bcAMSfcmbifgUSpzN0VHuQiVtpteyOLp/Z4ybl/F 682HHvSaRx3nhN1eP2lqTmUTmYlh5dW53wncqgXq/27LrBiPr2lk1E5Xz0FivdgqOJ1flMgqyTW 0DMePgkfWcuXq5vQkQYqKGicoXJsKtBP78OGam6FOVcr1oc/mc3fnG8lwZn3gwJlxtW7akrkEb6 bzx41Gi1381nFJ2uT8EeI6c0dtEAVpXtd+9qZ6QTDx8CGGsizfr8zSHOMC/m9LKIUi655bxModO 23SIhbNgHuDj9t3SbCujV4Gg0ULUPsqySin9yzsswWRrsBLl+V3nxxuWSfFMyVnf8tiQbw7u5AF jlx5y 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 Reviewed-by: Krzysztof Karas --- 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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DE9E22DA1B; Thu, 29 May 2025 15:21:20 +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=1748532080; cv=none; b=qL1saXnZX7Z/x7ZtpTpptZNFACfsNcsZsrP9GMNZbJDm3TVgfCLJoxWpl6bw5G7Dw2ahPiDmWEgJpwVFkOMYE1JDgyth+RVr1Pn8reolMnYG08tbu8D3204MC4fSnrGem2l+yxZuE/JcxEKxOtT1AqQM8K01Y6m+5YUqEUqeJ2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532080; c=relaxed/simple; bh=RlWXgxm38Aq29CBqdh8MUpS/8kHUwdh5uqxg8ACpYpI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iabeIQEDxOXhs5cWPo1+ZjKIoP/kSnrhKfAq/3QPkimFSbABk4CwmWEDmdQC54z3u7T24ODkWtFcDO5JxFpCJUSMJpC3SkeJyGi80tBimOQsbcunM1tH8oDWRjmYUTWzIxD1V7TdhYxMj7VyNjnLxXguswhuLiJtouIiow4jwEI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O+9N8cB+; 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="O+9N8cB+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F284C4CEE7; Thu, 29 May 2025 15:21:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532079; bh=RlWXgxm38Aq29CBqdh8MUpS/8kHUwdh5uqxg8ACpYpI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=O+9N8cB+GwpoqfvPiHGKa90TiTPoMCVbpSLT7KFPtXKlgIPg1rVh03lTjuc4+BYkA TJqwQpmW0uqKhP/YAIKlWWzF4hWKgyh+9ylWdxxxDqTOuD71peN42inzqIky70vYeD MC4BVmbOu1oNLAM7NdiOTrXIYIkAEum7DW2i7STNHFidxVwfm6mAuDf/Dr1p3PEDHi sKpiX6qE3HHbm5VnTUAJ8eS36vV0WL2/+G7JenWbacVRPhSINCLSG5x9EP+EaLbctI WKs6zL9DzIr6L7d9+G/4gMN+wB2kf7yWNP2pg9qHIkfUeKZ4dgxp4l3fjz3NfSkw5M JmGCcPIaCLEUw== From: Jeff Layton Date: Thu, 29 May 2025 11:20:39 -0400 Subject: [PATCH v12 03/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: <20250529-reftrack-dbgfs-v12-3-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=1030; i=jlayton@kernel.org; h=from:subject:message-id; bh=RlWXgxm38Aq29CBqdh8MUpS/8kHUwdh5uqxg8ACpYpI=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtl1UPDVJTvPvJNRc98rtdX0aJUeTHv9FEu0 Ma0CvYIM+mJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZQAKCRAADmhBGVaC FSU5EACD3kw01IXG9X38wceHpPcVWw0grbOSu3GeJo+/T0YgHoFNyUvQ8qpkeNzxzlLgL3oLG0e Jhr+xQXngdKI1kdPGHFIzkTyfv8YMRivcMddsIaq6atTsonLPH1Bv95G8RMC8JJOElxyX2wAcND n2gb/0ooYNI1NuAh2XRw68KsvcF5J2Fv4yJkqoy+c1iemfDLf/C3oyl8WxuFmKzXkwRTGs7xW9P NYpOvf4DGWjj0J5iewO0fH75PD0QQeAhqQAnXLJkrakNhFvU/aWGng7tgNJCbGX7glsygZ7wUBg nXhexqtdpL6p3Rpy9nadviXOX+Y7pjW59Ys+DkS2iawi02V/Xf3iYXRfyPdCQjBRBS9zdw/Fk/p qp89wtBNIAdAuvbNgqsG1bHJXkpUDE15eTp1lWJO3/2WVw5SCLAJYrLjw5vUnTI67hgDCN1e1kE ds3oM0+9K1PaftZRS9IfnfraUWpfYJTB1kxVsUTZW69w/kMvhVw+GoPtx56esDrly/gx9Ia+xQJ 6llOxwBhAnWnhrkmTyyM8FZMI7K8qU7L+m9z3EyrE6m3iHMTU5bUK8kORA81439KrQaUepzBM60 wieDuaGS+fYwgfnn3NGD0gvxANZAr0KDm2+ggdFI/TjRrGBOqFEhOG3yLVnNo/Wzb9TxGeSXyx+ MkZQKh8/mr3MasQ== 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 Reviewed-by: Krzysztof Karas --- 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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 717F122F16E; Thu, 29 May 2025 15:21:22 +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=1748532082; cv=none; b=ANihJY+jdLNolGJ4hRMjWXrkf26XZOsxCSH1/VcnDzhF+K6aTxxiv/FHuQ+WO0pX4ZXBqE+tdbeTPSExeGj+2KtPV8/TTp63yj15xWEwx12kfOc0XYYm2NfzGFrye4CGbZzpi01y1BiAj+ipvZBchHVUNoMX73piwejsbvUy04A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532082; c=relaxed/simple; bh=9KzjBeijJbwQSkvtYkmlylVwurawjIJhRyN9jmLegKI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uK4QkHWSzRI9XriSb3dKEfqqt1b+0mv0/FPy9ypxpTK3fEq79hFgfjIocPmJUrb9maYZl3jid9VEbqo35yH/b3lKrcOOZtQoPPT1jxtib/oFH04/y+CtW1GtvbvPVBHRhD6FZ/Dn09kQVvWZ8zoPp7HaE0z/4GLWyNzEkKV7VVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i4N5Acgi; 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="i4N5Acgi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27FA4C4CEF4; Thu, 29 May 2025 15:21:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532081; bh=9KzjBeijJbwQSkvtYkmlylVwurawjIJhRyN9jmLegKI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=i4N5AcgiTgEyDcwGcPjOHjUScjymcYm4cycqpe02RHsBEUI1K5wqC+vhdBuUWfjeU VbTIBSvVwR88E0jkDZUFLR0VVv2xmkDzLlnrxOF1KbAHY3ZeN2ICM5vcgzvbtam7lo AafWDYGZiYiH6zw9l7BusWPklAx25435mCzQi3RGcH26LqXqqtclkTrcvSpWAs5j7u llWo6DWf+35M19a6RXLfYfVoTrAZ1ZuEaiTdrfev4engMnhgRQtw32kir//o68xMOG UY9YcZB790EY1bQ1gQriQ0CsTIniaRjFaUHXVCYYaSdbElIADVHzFGAx1i837MwRP9 +Smrxno26DWXg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:40 -0400 Subject: [PATCH v12 04/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: <20250529-reftrack-dbgfs-v12-4-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=9KzjBeijJbwQSkvtYkmlylVwurawjIJhRyN9jmLegKI=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtmR1XufS9ecqZGFnGmxkvcH1MwQt9Ac+oyh +q74Q5/OCGJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZgAKCRAADmhBGVaC FUnVD/4z3Qi84OdMnuOf5443OuPUvmBC6C4oAF7j4rpNDD1PTu1r0Sam9NfCEwdVIUsludfONZV Xj09vkyAiTT1uxNTifSaNBslXM0Wrpo3xLLN1ygw8DMlRmRR01oaPqK0m1bu633nr8yi5UW5nCr zrdo2f7ovU4lQqxAxdVHaFvA9I8nCa44xpz9QWjbxJ/nuwigEVquhFcm1+7YU0bHlB9jTXsua7f 6gPZOfEKrVl5dy2ue0bEGtxJ1GkNWtMac0Nj9GCT9MR5NxbmZrCpfx8G3f8kApYumF4oNcZpk2B lgdVQy9n7Bi0c17xhREqtHBJy+2enyTg4fxtkB7FLUeudx9cs22ARFOSQ+m6NhPJWUe+ZxCSXYp VahU4ROkT5lSs5QtlmYJJevB8JIzdqgp8VYtzbvXrTiM2ty8zP+ZVlBJ9pBmUydZDzKPpfFGS1e hWsV0BidIj1CpGESSmeeAVgztNU7Mr//rkM5CZPYUNhk7FAI804O6kijITNgjXfwSfyXawuAkZN 8KHJbmTLSc5uXFR+uJMm3neMIlGaR14xnHHEuOyT3+4UErb1ObX3kXNBzDR/ibmDIKvHQt9W+oi fm5muTqn+xeRvr6vAe0da/f/dize5qDghSahl9fPL544fCSeeLjKvu1tjPnEPtJu28RCyClcBzT eVlUK3EUVBTUcGA== 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 d374e5273e1497cac0d70c02c282baa2c3ab63fe..4f2112b001de3049ed542ea3c4f= 2bc1e9cce6043 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 Tue Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7617322FAF8; Thu, 29 May 2025 15:21:24 +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=1748532084; cv=none; b=YtUIIcYS2rsIlP5WQD8wja0jhV2oKiwp23F9FjrzwHF3+2rqwYKCZ0/5X5azLXsQSR4L1zJu7trgMHiAqsuqkbHvMbO8L5ASKwfgkEyw57hIS1cTx+CDmoRvSwoomPRa6NHkqDlAHPi6MFTDj1Bimg1xZ7GLj5ZhA69cB6WBBcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532084; c=relaxed/simple; bh=/bXRm3df/Jmd7dmKQp2EcMJiEFTG9IXhnmpGk9i/Yf4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JmialT/5CZLOrVM+Gtmt+RGtM2GOepwqCBiftK7c2pep9AA7dXcXbf+dziBMV1p5Qy9cR/wc/U1lPINUTyANjwB88GheUzHeBXEn6FCNKtBzt6cy0Ts4IPs9rx9oZHno2OgJ3bO2eyV1DmaiadMslf2rlJXe5sD6lMW5BH+fslw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IIkCwJPG; 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="IIkCwJPG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2D27EC4CEE7; Thu, 29 May 2025 15:21:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532083; bh=/bXRm3df/Jmd7dmKQp2EcMJiEFTG9IXhnmpGk9i/Yf4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IIkCwJPGHfFv5Vw8JniNayV8B6Iph7G54szXwgbkF4bZBP7NNHc2AoImAPIOTNozk y0uY/MOKbJDi41AlyYOdkVaGDdzJ9Xe9GVvhR4HxtYg7rKwu8pfuCUANDwY8QBeaW1 AKOJu5o1iSpbXEuyiOtChSEPEAZs2hHuylj4TTfK5Hm/NiPZnFhA0bf4AkbPMEiSwl YUAZrwbrDoT48WuIZOJQqqi2d/sDf4w37Uk9TTkI1oc5c9d/3IW2oIjakCRDhmk0Ld wz7NjRwA5Kz1pIylAVg5Vt25WByxbzUK9+8a15mdhR6z2vEAWnsbyRqVQYk3yoKoTR SpB6ezGcbHUJg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:41 -0400 Subject: [PATCH v12 05/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: <20250529-reftrack-dbgfs-v12-5-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=6071; i=jlayton@kernel.org; h=from:subject:message-id; bh=/bXRm3df/Jmd7dmKQp2EcMJiEFTG9IXhnmpGk9i/Yf4=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtmln6V4ed+81nml02QqkLNcQGLZKHAFNpo0 or6DobfRmKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZgAKCRAADmhBGVaC FVHLD/9G7fpYl3ANPpt71oI20MxdfY2S/90Q8WPoBnenSwhfVBAGyXwg5SN1+wTYR1xG67x8yAs qxded1nNEDTZmR1tmioXWN7fSBubT95JD2NuWEESc5kJmH1YMnPm1phsQSMMUHn5oTUHIP8KoeS MZaIQSDUCd6twipCWsilAIVUeeLfuFQGq3ETxJFFbybKtRIohLA/JXM72qgGMMU/2c64oQwD7da 7TeZp7UrJ6tP+N2qVDlB6twSD9zstRiCsNUulodaGLZsSnMVVYnHkq4D5DQe97JDqCLtZmMlw9L 8s6hEShrLSMB0azFFsweYproxLlPuqnFHMFaxv9sakO9VLbWqt5OQhU4qKtvyH7uWw3xlpHPKx2 0rSk6Aqsl8r4l20JcqfeDPkM2fIvQbtaHIXr5i9oT2TGjqR7WZJjJHiL8vrDjyDf99Q/RLp/gV4 Hf+mnw1kqde2KntXiMPAdvTMvjuCQqbpu+W4l13pUnEv7hKjYNxmgJAtvTRllFSwr+zb+v41h1G BN4/j2dIXH4B+A8PH3pWRKZA49k1bHYnpEekm0LFAMfAvyEDkGKVA8KjHAeiZRJwOuqQ2rqbRv5 XBhywTmVVT2gqaLZtueeyESbaQGTpWKpgp5evIwv9IuK45ZzQqXyzzoAPCINr0oaf0HdrC4E3OL Z4c0tn/wr9oAJXQ== 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 | 5 +++-- drivers/gpu/drm/i915/intel_wakeref.c | 4 ++-- 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(+), 9 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 1b2ad1e0aef7d317f63a23b39193ea81c90401f0..90d90145a1890bf788e789858dd= ad3b3d8e3b978 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -59,8 +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) { - if (!rpm->debug.name[0]) - ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, dev_name(rp= m->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 3cfd68c98023fef75faa4dd69eba55e093130dd7..21dcee7c9a659ac1fb0aa19f301= 8647be3bda754 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,8 +114,8 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - if (!wf->debug.name[0]) - 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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 721D422CBFD; Thu, 29 May 2025 15:21:26 +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=1748532086; cv=none; b=icy2AQJpy5SK6uIugLLHtc+b+auXGlZC1lPake+SiIbfqyml9RlMw5ukTgv7o4hdPHmqLBoB9edSvpcpvD2GCUw8Moyg94MJ9BBeHz10g6HobPdFrHQlUzDRGtP7EEpWx35XgYTNJd8wy7b5yhcgibL5r5vLJOThA88GxWr4ib4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532086; c=relaxed/simple; bh=wAehig3CgK9jQX57OpnOj7ZF1fb8ByqK1MLiGa6luaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D3NxikYZrP7/w63h552drDfFYoKXkuZzHlugp85HnNnW0ENNt+gxSNtIK0Wsnvolt8CIN38H+vmFnhcMDnTmXN8373pCNNWJFX2FAG5ztzRcJxts+lorNPiZssVuVobtQ3NX1aUgSPMieHzZKKipTl7AclzDXhYxcWni1rPKdiQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AUJfCWin; 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="AUJfCWin" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2CA12C4CEF1; Thu, 29 May 2025 15:21:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532085; bh=wAehig3CgK9jQX57OpnOj7ZF1fb8ByqK1MLiGa6luaQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AUJfCWinRxeYJMpUbnSVZmKU29TRH7DsfLVZM6V1GoQzqe3Qf7kGO6IsRrcrjYvzy lj7eZ173IoRx8CqaTtrLPpCPtbpf++AsPb8uR8Rs16ZNEfjamPPKgCIRIAGabxoaOp QzA4Oj25jx6o9gofgITRcfc7/N/59/ZcCpSSkKGmqgdB7b/bn1dc+dw3SnzsYE6TAj zxf5HeM9Yg77GQbi/O54/PitKeqC6+e5prwYTfSRFy0NHpJnLC+aujQBXUx2HA8+bX GXbUShWZtBHRtV/daSxEiZ5Q8ISMjpaKwJA87bIHdegJw8z56EHqJPUE6tIPeTB+Wx wJjja7s0E2QSg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:42 -0400 Subject: [PATCH v12 06/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: <20250529-reftrack-dbgfs-v12-6-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=wAehig3CgK9jQX57OpnOj7ZF1fb8ByqK1MLiGa6luaQ=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtmzR4/zvXVJiDIizB6A00wECexd05651FxB FkIGUYsN+qJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZgAKCRAADmhBGVaC FVCNEACtlOsXCW3GVxf2Wx7xqW+9KmPWxOfHnhPhoxg7+CO9kknQhM5OMrorNc8T8+4DLRKfWCp H9wxTThj0zwwJ8B6aSbdkUzrv3aDuDN0WbuF7DZLl/7a3wLN3DCaij85SCjOyWXV6xE68eZmYDa As3znfb+TSViw4ML2GrMlVutWxIRTKjUMcWYJv71DOSSFaAAgKHGJ7DXvps3rrJu1yG8mswGn8j Hief9f1x3IBuMjNr8+2d1bSuFK0PhUbRRSVpsI9F1pINJyohmDW8Nvd63W/2xFYOPsNd3KqXIhM /7GiEaXllnlB5qAXotuL5fHy5loZSE+WQ0JTwhvXOG5s/g9xkHhcoM1gd7MS1YTYUbY/xK1i6Pr PjIu0/Dr+46y6n4ceF7MIi5QVGQ1qSiFJHyDuu48HVoxvCGrIPtK2DPX8v+QVXItprPzx/nSqE/ UTWa1Qhhksrlddn1KdbeF2J+4PSRpLscm0IQc6ggECzvkcNrEKoqN2kvEQMJgGuC1winO75gYi0 wmgGitraq3JfWFrASSHW08f/+6SYuF4d1Z4t96sfpu7KHgpEZwwxpropWR4B7LGs+FmirRocDAz d4CPE4o7jhVGZs2mFeVzd2sCr+Z6eefJ8oEU22Im4jVMwPblW+vP8VWu1eZjKQkIIwK+OwhmI+q wiYA05H6hRTvlWA== 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 4f2112b001de3049ed542ea3c4f2bc1e9cce6043..5fed791da84f523500d2edf262f= bb20adbd921bc 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 Tue Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8018D232368; Thu, 29 May 2025 15:21: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=1748532088; cv=none; b=FmckavZR9RHvK3pGA2KYqsFdFrmopTobwMalkH3uAGMJP/8nwJ6m4t0Ml+vt0oWlSHG/an8xYXEGrFFXHHFv0ALMA+K6Uqp8vFlM+y1Xx+coK0+BeX+oL96HwRi7yt2RNhjHTtjVrIWBstsUtWtJFzhUdF4dwCEFR2IcbOp/zr4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532088; c=relaxed/simple; bh=/vhrvj9EshUSFRe+k93hjTjlDaf30z9vIkEssyXRZLQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oSw/QZ+h9ptReYAffmag/yZPqggBa/eM3KGiQqT7ltHL3TO3OLIqILx/l+NdZ4vXckaU9CdvltArbZNBr0LEkEfBsp6HWU5BTC52OSiRvngksYok8bKYC1vIwx07SDU9IHXaoNoyHuY5FSNMEEGCQZof2DJUEM7Mo1c1TkRQ5Pc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mC0hvfSu; 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="mC0hvfSu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F7C6C4CEF0; Thu, 29 May 2025 15:21:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532088; bh=/vhrvj9EshUSFRe+k93hjTjlDaf30z9vIkEssyXRZLQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mC0hvfSuxe11S5DC71rAW3HcADDGOB+dfhGr+jqxRixgub4GH93GPSLmxSgOzOcIm H4tEgTXMLH3keeZzFTEppDMOzQBNo8KMnHzuPnwi3hNT6bdHVc2RWdejVfoAPMr5vz K+TqZPQ6akhfyBneRXhMJ2ns4wAv/TXfNnu4df9mQKXsCfN+iIgXuvSWhuwVOzhf3C lKCGGfvjMQuCOA66LIlGTTj7VIZKKemBM+D0skbkQ/F2ZUKA6Afh3d16QoE+Pfl+rI My3SSRXamrwAmJ2dy54zUHEiYG9CuuWduITzvv6yjC1PPndawDx6Ttqyt2y1r6nkCi ZINFnAFDF9nAQ== From: Jeff Layton Date: Thu, 29 May 2025 11:20:43 -0400 Subject: [PATCH v12 07/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: <20250529-reftrack-dbgfs-v12-7-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=5401; i=jlayton@kernel.org; h=from:subject:message-id; bh=/vhrvj9EshUSFRe+k93hjTjlDaf30z9vIkEssyXRZLQ=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtmzkT9g42BFJ3numIAxYbXaYAjv+jFO4wtA A2GFQnKQMaJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZgAKCRAADmhBGVaC FdlSEADAQ/xSl0elvH1CTwgWfAUC0yp6QxFtNedlTpqbKavxvgko44fnwxHVCY9T4djsp7EJw16 QLckJpNqAynd6wxTh12R6H9b2svriqC2UIDlQRZZdVyXXgnFXHNaK88eliqk6GTXBKbMMfpv9tY ZC3f0qaNm8QWC4JR8CtMCOk/SXNdC4+mPohaE/AMqNJMddMcmnhJJ9TcTbxINxBWKz+3Qh7pceP jIcz5tADV4XgdCNu6Nj3jW1ree9N9W+C53ydWuP1BeQxCm2arWm1k8JawE11C+8j1K2zyjRvsmH njZTzvID7yHy7MGNA2U47nFJqHRPGme3/rZTFQLxcixSa2D2uhTsu+Z3nmOOQL62+zgDpj6Ao+P xNApC0lH1Krl6nv5vAeVMKSby/QOgn2znZ6JTn0YkwVHyq/qVorLBBDACfNnPKj93n4GeKGFUAn xAbMqnrRrb+IsFo64eTBSz7hTnOBnB195pKWLIMtUSn1R6IbvgWJP5liIEi4oszI+lHACqz/sYy OLibYWA9/lhuK5ktlvaiHESpXcnVyYNhnbz3SehbIg0oLvWP/wG4c8RjsWNaOPUQg07jShJP4aB PASVktdfyKXgZqkKGenlibdP0yKETFw8XtacXTqRU5caNO2kJmzFrPFRcjA6LBA+Y/RbdZJn74M U48XQeRkHmh0cKA== 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 5fed791da84f523500d2edf262fbb20adbd921bc..aed35a898466888fcb4e4186774= 933f54793008a 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,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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6CC13233D9C; Thu, 29 May 2025 15:21: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=1748532090; cv=none; b=IrdHAAFt61ScVMnaWA1RbcKtpVmFGFv2m30Thgnh3cL/r/Bj92uHodsjdaWVnfK4B0VrMrTlsTby+QK64UXLdbCK9Wjgof6OBGKpc8MJGH1Mpyoq2pybK22l/FJKIZeoopvwmUpOlGNm1zugwmq1x9/idBrycbreBE0iYjHbge0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532090; c=relaxed/simple; bh=TYdiGaavXoUhBEfyJ2tof4CzGHWJn078+gZ8gTQMfh4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qNBtrsxT08JI/NuwTVgcUpx7vsT1Br1ABuBtXDHqOj9C61Il6lwn23Lz9AG4VpyjsYVr2SmUQhAina09rW0f0e61MsopFmQB3cVLXIPxwEc99/4cFhIwp3WAGpYhcNgyMmwwE5msl93ACmP6fJaB0pzsL9Sdbutn3Xmp/rgu8SY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SSzdUfoO; 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="SSzdUfoO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30090C4CEF1; Thu, 29 May 2025 15:21:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532090; bh=TYdiGaavXoUhBEfyJ2tof4CzGHWJn078+gZ8gTQMfh4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SSzdUfoOTKfagcpSWk8/saZ49LwK2g8CVmDSUgDAK2faZub3eaaVGSnGLBtNqKRnh 7RktK5Rp12TQVtFN3BXQmHvGL8rf0egwMC9qbthfQ+5YXH7U46QYqodFg5vdvaP1No zwYkUoDbLdm+a0Z3tB0W1ArgLOck+qcJbRxGBxbSYVRrYvb/CPlbEaeveUvQXY2IFs 7akbAsO3TU5HDV40Jg/LX9L5qJzIQ9f1ZbX/A+TU8DYCU7vQawW99CxpccBwQNi6jX dl7t4p6zTTGDP0goQl/bT1EveuBbEyg3NPnO2hXgBBadOj/bUi9iJK/IlpE2EHhsII /eXo+3vzhCgHQ== From: Jeff Layton Date: Thu, 29 May 2025 11:20:44 -0400 Subject: [PATCH v12 08/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: <20250529-reftrack-dbgfs-v12-8-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=3044; i=jlayton@kernel.org; h=from:subject:message-id; bh=TYdiGaavXoUhBEfyJ2tof4CzGHWJn078+gZ8gTQMfh4=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtnIA/msdeh0SYjk5pNmKitkc6lL1jlnNBjz XK+CBCnD6eJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZwAKCRAADmhBGVaC FfM7EADCnX8FNq0rJLAa/m5YacLEeBDeXnKOAOu1EUGd0x9Sc/13o3JV8v58xmiX/hggibKW4M1 RxSeS+FbqyzI8zlA6AtCy/jjs4AcDRohpOdVsfha8371KB4cSurv9GvREmdmRLGiJ48mcfpUi6R 4JCjgmNhXfSP72aCCZ4/RVz4ZWsZvcFVpIMRIxQHMnRN3D/51Q9wbCOifHnRm8rGGsY9fxMKSeJ S+iv0HK1QHDu82iehMPD1VNFQ2ef38ZZ/NCgSLZX3nKgU+FHpypPTemO3pUCZZ7oSwEw/uVcSvu 0+7U3s5rb3QkAxcgIeIAUJ8EDBOZ9aZnQ52Gy9ToJoGQX73TqeIDJfrG1HJe8bn4tAMrvifd+aw aVxRHTcMzKR7dEUwU3TBDaKNJX3DleEN2ikcFoDswZNJxitIK4E8z1KU8GROoMqyEYxspNnAeNI zCZAQrxsCoTD/2UJr3AlTeJ3ZURlc1khik4G1MQDzmfLxMe64T2oEITH9OBuKDq889bM+QdCpxE u2AWKsWEWAesDyUrPdBXef+N5OBeqFp79yl6Ktaylew3wcf6mGCnlf1yPoBba8fEiqXpEgzbLw4 XiIipF4V7DxMgJPT286+LIzZlEC34hbkAHT3i+rrXXCeVFsRQyH8AUaCpv1vdBn+46EHzbLXeFa xgj2Buo4+MijiSQ== 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 aed35a898466888fcb4e4186774933f54793008a..d778820bea952d96c9a1c280dfd= 6531135bd85e0 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -384,8 +384,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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 165B5235345; Thu, 29 May 2025 15:21: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=1748532092; cv=none; b=AvpQDLDSrK6tmeaBamDkzrnjGcRx50XOa6EEpi8XzBadm8WRM9rTuQOIEAIY2+mz+HzHeb5muh2SGJyo7/Q9YvWDNp+asR/HIf2SBVz337bi202NfwTiLdiLJABmeHHv4CLS1VmrScKIUN88wkClhOwd/uelbIKYv5RzLw/zq4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532092; c=relaxed/simple; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QwQuuNANMNOseRI8wIgDLd3YEgG8s6f8pESSO0EkCyQE6Ay5t4Zg0qXapGiZk+45/4gAklqVwD68UGBa7L+y+Um299ZmZX96xD+ItqreC4KHF8SZ3hHbyK+Dlr/RewK7kESwBO77RxBQgfT6xQyXfFm2WLO4QDkHubjhYyFhOoM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kMF8Sw7x; 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="kMF8Sw7x" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30A16C4CEF0; Thu, 29 May 2025 15:21:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532092; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kMF8Sw7xGxLd2lLIJfHrmy5vA4hkuQ4Rx9jKUmNOcFU4SlNiGf37zVLhWF9c4QtSS FR50PlvR5XEMhwJMVlDlhGXp5WHdIEsWJ594r+nuckuJUAuFASjiMuih6yramz9vW+ 6PXjdqEc08WZCfYVNF14+DD2Cvx63WPP6Gmon9hhIe6csZ0fhbfADDzjwvqslAJWrx iqN96dVv9GsQmTMZPJ9yk4jPQYzPQ9Sz2pW0Aca1Rd1OZWNwc1onAC7ZJYGxDqTy1F ZI1vBpRqyMlyLSUfCDxf0omS4zON78XzoAfgHJO2Vj6cQKqeW/WeoI/fCiKX9r4mQO zqvFmv7QTK2Cg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:45 -0400 Subject: [PATCH v12 09/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: <20250529-reftrack-dbgfs-v12-9-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=1850; i=jlayton@kernel.org; h=from:subject:message-id; bh=C3NjXad8atSO1FZ7CKOXtU5VIRqVojZ9jejAtjAiqWM=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtnfvs9pjt9Rl/Zi1M5/arux6vA5kyN/T+ZS u/b6du0baCJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZwAKCRAADmhBGVaC FeKyEADFuEALcfM1T+CmjS0c3/YZIgncuvz52TkQDFPi0tjbtjgQ3LudJoo7etZ8rvBceo7C0iG uuVkKViJ9NfLPCkZlBFGaaBw7RLHB3prepzbAdB4eG73DxKsgJ34q8vetVbUoOZ3V4M28YQTEk2 q94JijT6UtOGSprbC24ZeMyS3lyTlowAXsPZ69e+cEMmXoVE1tY9Jp9mUI7GDaTUj8kdUeSXEIp KsG6j8EftlyMcq28lgluPKB7MM55t8wotNkIXjM1NST8TH5vm8M58V1vdEhIY89fw0RRMuf3Pjx cxdNLZ2bhnYDQQ9VDhRrBj5JuhS8COXIUzKOe3coikPzx9Ikw2Hc2/7eJjmjHuifruHeRGBdY71 Vr1nfvjG7Ppv+F3tdundvJwFko77oWah1TDiLii1huoG2TXQjF1y1M+W2IKeJIWU+oqF7Pg1ZNk mvT9h9Ccw8nOQT2GcpP8JO4BxjE9jWsZkh0sX3cP30Vrbaelk0nBOL7o6b/LpibfVL/pqGxki6p Hftz/VRStYEnklLMV3Vf7PAPTt6MjrtOdkg4SkcU1Z1FIR8uQEidCPmldf+SlyQ6f8xqwrQLBSj abvvnUSLoux7PtAwCSpYXL4t4ydPJ7ETfZs2JM5bHwjmSgysCsUaNZptRlMg4uUU5w3a/ncqSoF 8xKhRtbCmMdpIqg== 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 Feb 10 21:41:08 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E2132367B6; Thu, 29 May 2025 15:21: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=1748532094; cv=none; b=mBBVfrxzt9d5tG7mixiY2WcsIN6J7eebGxhhEyTT+xHUoaXCX2dCPsJWmQ6s78oXazSOaq1hiMWTX0uGDLkBCHWidgZurpacwrDjblk5j5kwQhRV0EDYtXcogN7kcAzQkjhBvaVA7XVki15b7Q9+1VYT4iJ3T+8yUcoAvqvHD+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748532094; c=relaxed/simple; bh=FwR5EhI8xrwtPj1Jun0AMgnQF8ISLd14Opp265Plpv8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jLYuHHm4ern2GhsTSUzkhsNfBi6EPKfZYoOojjH3Vii4YxZMJZAgDSfKDhPSRt7G3ivkCUFkeJs5+yBSb5Td0N9JFuqrtshOxBTCnYb50oiiVgypj9BwonW3poEjPRWDzKGBpYkKJG2xjFen1oHWY5Rzly0bijMLandsm+w8WT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hML2oM17; 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="hML2oM17" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30D96C4CEF3; Thu, 29 May 2025 15:21:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748532094; bh=FwR5EhI8xrwtPj1Jun0AMgnQF8ISLd14Opp265Plpv8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hML2oM178RlHw1oKhAtMumRJAxcFj9Uabw3ERlxuNYVU4gX/dw778C5qEZcYi5iJs N4UgCbGVJQrlaEqnAScfFFZQhmS1o4AD/j6bryqaMTgBGPcX91umcO2os8RD74ACA/ sICVg+lf1hC0IG5i41gakZx5kbnrnjbgOX91k0LHGz9nxxB/bIQkv51Dn87fgAPGvn 5wrwClySble5OZZXtTV2pBQWQvzCemFfl+CANPdvxQ3jEOn9jAfHj/1/m86C3L3ldb +yEuvIb9uL98S/0VG+kYnoXcA9L0J88EM0srk5gHB52K7d5x1EpxI+9U1n9sBXGnya AoTbu9du8vCvg== From: Jeff Layton Date: Thu, 29 May 2025 11:20:46 -0400 Subject: [PATCH v12 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: <20250529-reftrack-dbgfs-v12-10-11b93c0c0b6e@kernel.org> References: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@kernel.org> In-Reply-To: <20250529-reftrack-dbgfs-v12-0-11b93c0c0b6e@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=7441; i=jlayton@kernel.org; h=from:subject:message-id; bh=FwR5EhI8xrwtPj1Jun0AMgnQF8ISLd14Opp265Plpv8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoOHtn4IJ7SURX8BQCD8ZYnwubCl+5SbqMsQ325 M7qhoOOnv2JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDh7ZwAKCRAADmhBGVaC FS1nEADXabjBb2oDwftNBnUg/O2eeC5R7JfyM9oTyEp3hl/hNYdp6KrZUEQBpu/jWMb3Rq99zwS 4JlewudUzqNKwp0TPIXQ54uQzwHBIMtRt0OSo1YPbb/obrQqzQlgef9j13XmaGU3rvR3xRcAM4x jtShncPnygCZbRj7EZzAKgYTFss8I+7cnJ9orBkLLAsa42I63DJVE+fXuhqxYOD7cALUkSfAqSq tU6yWjYc0x0Vlsmz2yhyLHwFAvm0aW0UePHgcgVD71Q6wxEceqAKuVXnPVZpxBtIcRrgjd9sC5N 6UCXagSaF42ZEHbvI+81Ej/3IsgmuBPT7Y9EJlIAvGk8PUBMAU5Vi4olmj3LAN8bPno82/W2qbF JPYfEsq1drxLqJw86ZtWR8ZBqgJJjdXKmiEIjPVVto5JngM22wIX+yUl6khpFi3Q7e+1+2IwHes 9xI3d7Wn9SSDzv0o6D8YUp1lIkM8hfQXgdInBLA06sYpT3ZGUArSdIrHctc4uDV8dGKXlIW/3nC SLFbvZTAxHM+/10WNDr2mLAJ2G+tE0timR/+/b3zdkTGO8f9QePcbPK0MF0s+nvFtr5b4lg4Eut K8yX6taCuIRmbnJGt1ElyzDr7BDjeHHYWNtOmwXue+B6ySEq5s5WNDjfKrVomN763a5Mj9nei/d pspT0IXdb+kJKzw== 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 d778820bea952d96c9a1c280dfd6531135bd85e0..897c5b4aedf7393aca45ed10b56= 17c81e6f7e6bf 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 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