From patchwork Thu Apr 17 13:11:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055560 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 64EF52475E8; Thu, 17 Apr 2025 13:11:21 +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=1744895482; cv=none; b=FuyNCp1sWz40bTXCQnixKSlzoOQN49Ljn4MVLVpM+7Ro7nCe29ZfWJdI0CYptL/iWb5g1K803W6ZgYerjuShC1W8lJIxpFec+GTxsNyr7p5DLAYfZjJm6HgXhu+O6/pMh+qu0OURRSshqc6hmPTxw7nXCBzKqjDKKrSBrPgq93U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895482; c=relaxed/simple; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I19aHKRNhcVnZC51Kjr19tjTbsgfwSmusv+LoUZ8ow1IrOSqI9IDpIaBChuMnuvcx6RsyoedrjinVHcYj7Zc3MFXybX1MA6Lvlbz5D9QTeRxXPVxgMuAAKqCPRwPcSljMxrwms0tkPHZeF/R1xo+xsSkaTblhKxkiRGAqeHHvug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cdXr6BWt; 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="cdXr6BWt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA931C4CEED; Thu, 17 Apr 2025 13:11:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895481; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cdXr6BWtLIcEe77YtGzv0Itty185uWz03FMj1RPPlvtjzqeha04gWsXBHdq25jkSq mcOvdHtxfjA7+6/N1Cl3eirNYB8q1Zko7JyqhwTAcAWZtQGlAFPX/N7JAfKNBqoVw8 fmZRAkc0FpbgMz+F4/yGR89T49JvDy+SL9FIxxg02DWGf28mq6oJS1itnyE/ctxpIO Z1p7P3b2IbAIP1K6XzZSAzhhG04p9lzWsgufRD0zymf1MCQ42KtTH93nbgiLCds51k 6wbkcUoeUUfa3Q5wwHRAfC/PyUUMxeRK7bcjD4YCYs2FC9xhaxPCkOxV3f7gkOFCSd sewltmkJbK8PA== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:04 -0400 Subject: [PATCH v3 1/8] ref_tracker: don't use %pK in pr_ostream() output Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-1-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.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=1766; i=jlayton@kernel.org; h=from:subject:message-id; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP31s6P/RrZc8O04lUYQAwdOvxsYoH9JJPd4j GYVdgvCiRSJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99QAKCRAADmhBGVaC FZiSD/4tr5hbBZh+e40PK990MVzHUg4wxVI1U8HoLbCRadsb5C9pcxWotEVVxFjeSA2y8apUhew L8IDtx6Q/jyzYaHF0NnaryScmxNsTitIih3ptoXozVGpms/wVGo2fHQ3wT0jTHCNkWtkvKCa0V9 kVGmpPMhHmI4QFzIHdzTcv435jt+KzjJ9znhpFRlRL5hHINLQmbJuK93IZJkpBGcEW/djPtts3j PZnvuS6eGrMhFDqzLVKmbn7Ih0ugs28UNfZgnljHr2U7S1ELL7/rdEWJyOBrKFChjmrixIQEYSd 6jKUsmRbMBLiET7uDXZF3tJFkQoqyfn5UqfBUezpfchTJrPexvLpE+9YaRHRxSqmSA8SJ5qqG2b O3Vz3NH6cM5m1cTalH0lkNfFjI7Rq2W6pfP+aZKvW1X6hhdQvjIzw6mDg4L03S3/SK+Ju+hdA29 /YbI3sIlgATbzUBBTv+7HQ+TF2X5lt97H/c0EVAh9DUIV3Ih1/xFWHPbe0ujEkdql2KdhVYV40u sSgtMcQ4sJnpa6BtW9tk0j7jcjbwh75BXh/QjnZALOa7vo0806i4/DjTADd+f7BwW9SNHk+7+jp +ZCMqBqCLJPvSUz4KCG7es1/InvwfJSIBpH/NveIdUAdPKCqkVupCueqck3rX3MLugXHksyVLED cKO12cEQnlUJC+g== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 As Thomas Weißschuh 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-12af0ce46cdd@linutronix.de/ Cc: "Thomas Weißschuh" Signed-off-by: Jeff Layton Reviewed-by: Thomas Weißschuh --- 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..de71439e12a3bab6456910986fa611dfbdd97980 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, stats = 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 = stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] = 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 -= stats->stacks[i].count; } 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); kfree(sbuf); From patchwork Thu Apr 17 13:11:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055561 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 9978724A05D; Thu, 17 Apr 2025 13:11:23 +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=1744895483; cv=none; b=p1TojUKlaPdjlS9GvjiaQRVwjuPjiZLRQL4IhBeJ2ZXaFWZRyVSKzQeYYTPaGLusYu7TggkW+pWBphbgIFgeVsg9fUJtQJ8urf02OCnghMMrvNpdcXcoPt0M1q+YIkqwsIsMrj4SVDiBJ1Ezt+hQ4RCEvwlPfMJM/2+z0fJXA9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895483; c=relaxed/simple; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n9wV6FDC6jlRV8MSnZa2r/pfVNcBAQH8KBuyYvRfqXfM+9MkJOmbSv8ZrenH2hL3IocznXHTbziNMPzn8qAX94ndlIqU1k/JpLjxxpADZ/2QCWU/DFzOvukSnoKJTFsCCwLONO6Vj3YuvYwiLuoTt70VMN2rh/cUEdCy6NPzg7Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YVGF9Uc4; 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="YVGF9Uc4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 162B8C4CEE4; Thu, 17 Apr 2025 13:11:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895483; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YVGF9Uc4aASJ0t1wIn1n167MNZ+5CdFgaBLUVXw7vU+FLkCt/oTM/bV1TFLQkus8O x0J2TGoNEK/FjwRX9DVanYldzGNgy5m0MR5GO+0AeNUiISDb553RK4V1ijUUqxIl+X EzGu0at1fiLYlE8lrdrK6H1azKgICLwaurNOhnu+1lGLVmn3FklFomJOkj0u+5bpKp zM7ziiTTb2UFeCxHTa5j9x6zA3IzQStyRhqbtGooie66/OPtJv+sc004qcSpV6lkOe A1zdKMpH2XAMHGrBuybP+fx9IFmb47apvDv30FR4pb6kzAj3u4hDYYNliZiIr06W8o GnMY9Xp687gNw== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:05 -0400 Subject: [PATCH v3 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-2-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1344; i=jlayton@kernel.org; h=from:subject:message-id; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP31BOU35O+0H96hYXXcvUtYe1UwEgTSmo/zC 5RUsvWApR+JAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99QAKCRAADmhBGVaC FYKDEACwadYYxoR2TNpJwAY4mqCZcG2KT9+QGvS5iXE0e8zPcKCuTJSqbOdKbUeepXWNuwVy4fp g4YIEYJU2IIb6ocG4XedOR1v0kAT5m6yoOi4CmVTrmyOuq4bDo5T0E5jgSgngeC9IKQ2AeMOELu bg7/6f372wo2C1e8SyFgjEAFvJj2PaHxXcYvUtOPp8+xm0hvVpaND8vHmsKAenSJLYIiLeBtL9O or+KP2BImnTbutaYjPx7hBoy9WaWMCoWydlGFyLroqfepUYfDGPdGAf7Bi7aA1N9LVrwJLViHgh +UjQw3yHbqmiWR0uvzT7QwZKh/NoRpwYBc+kCrVljRIWteHyyDW3s74/Mr/D9koClL+kSXnCC3g 8sSrzIxVWDmSeRaLBOTRBBghTjnnzKTLyHt/TUjmarzapi0ywJo2adw2OfZ72XevxtINwX/672a 7+96wvVPjcaEunXV4c21TlQnAnpFllWVK0r81E92RcB8NemkDdObadQglQG4eAjRxNSK3O8KJKc q6WI6LLnb2U4BDJimmlCn0sAuL04txSqmc1oLDD5ak/UTLs1JQ00irDMx6gV3ACL6CoJWsbR09+ 2NUGMK4lCzdMBJ/hSk9ZR5y2Ms0muplWNVK7igeFrwaQMoaXqiaco518dH8A6pbx7UJxCR/CkA0 Rr1gQWsz7YMH/Vg== 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. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- lib/ref_tracker.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index de71439e12a3bab6456910986fa611dfbdd97980..a66cde325920780cfe7529ea9d827d0ee943318d 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -12,6 +12,8 @@ #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 +static struct dentry *ref_tracker_debug_dir = (struct dentry *)-ENOENT; + struct ref_tracker { struct list_head head; /* anchor into dir->list or dir->quarantine */ bool dead; @@ -273,3 +275,17 @@ int ref_tracker_free(struct ref_tracker_dir *dir, return 0; } EXPORT_SYMBOL_GPL(ref_tracker_free); + +#ifdef CONFIG_DEBUG_FS +#include + +static int __init ref_tracker_debugfs_init(void) +{ + ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL); + if (IS_ERR(ref_tracker_debug_dir)) + pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %pe\n", + ref_tracker_debug_dir); + return 0; +} +late_initcall(ref_tracker_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ From patchwork Thu Apr 17 13:11:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055562 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 DF1BE24BC13; Thu, 17 Apr 2025 13:11: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=1744895485; cv=none; b=XHERDPXDLx4h4+PTeyl74xVtXmYSkEnCNPfTI3CeNi5rnCuILcLPV4gBe4yxpyjExi+82klwXwjiFWg3ABloDeHhlwSOXosG/iHLYF1rzvk94ltBzWgLVSmfzzYtjoNfCLfeUNlTxI66xJPyn/M0kZs1rIb6RXcqSjIJnNrDhgU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895485; c=relaxed/simple; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gcp43Ny05xvXquVZq72SSzHGGZ/hsB/V/fAgAF+Wt4NxpctV4ErPdyftYFgq7srArvyJznNck1ZFD2WzFTCojHW91FcX2lrTXQW26xM/+e5v9YLvvemcZrx77CgnyLlluytzN1RWo8cdo+PRtrOsnALqN2F1mjrsRwCCRNzBRBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DM5B3Huz; 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="DM5B3Huz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4773BC4CEF1; Thu, 17 Apr 2025 13:11:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895484; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DM5B3HuzAv4qMoqLojWxPh1BHPELcET7qkooVTvLOab8IybBaaM+9yUV9WPUiyfgZ XrPBNgv1fmBp1ZHv0WN5+I45pXYP6cnjHd3w8AE3YYEl1N9Fbt4lwezyT+uuS+2Svh N6JevzDFIrGkTP250CWYr6+MnQ1cq1hZ42A7YzgiwK5xdP7eIpYMSSh1G4sEBSEf+8 7OuAqU/dxUvoSYOOsNASUOIjrrKbDR5U4ENuB8vyEDASbMMUF4CbD5x45Iiga/dz8j B0zYg9EXvgT51Hsz4rvcMRnPgHL9rPCR8fQwSRrgpd2MyFkQV7AjOwsARSHzF6LOz6 iMai7HM20rijQ== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:06 -0400 Subject: [PATCH v3 3/8] ref_tracker: have callers pass output function to pr_ostream() Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-3-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3802; i=jlayton@kernel.org; h=from:subject:message-id; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP32Ngikqczj888xwpts95bbXi+Qwn535JNc0 HgmF81ZXH2JAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99gAKCRAADmhBGVaC FcM8D/9nMDELBlNeX4QMRyZzD79WVVcRS/LSHXnxTFLU/e2B4ZkoA7JMYM2xmM4H71kfJ+XfmWv KMQ5aicPEiEDlB4gh8z94u4QsTiLfQWgUisBFVswJ0q3jSxHtzka7JqD+Va5WkJKIFnkUYkOn73 +inOHIJK3HhvToMf7Ew07LIhyGTGQoN6T2eVklPWuJKe8F55aR0k+teFJVYzMOLU4VCQzd/B8dc C+I6w6DjPXO81xzbAEgsegZl7VkKpuoRKhGlneQcTRUTgPSDdL/Slpvzo36kiNF6h1fLERqoRuh 7Odqczgf0gpbGE99/ix6TgCU9JoO3qWdB7EJgULiO+Krzc+W5cr96FZhJwCnsgEIyrjHoS/qZbe uQeugzsAgbqxtHi+Oucl9RA/tD0R7vFxqaum/5/690kz7lEUTYi+BzMdpM4Zml3hEvtMt/BO4Fc wjmt45lzPZ4ysOsyYMYVOaumMkau4OIINQ2G8j5TLwqQ/Qa1O3UKZCnAbfOJ8EpYDn0DAXPwQTx /cmN2CJtkZzr/KUy0VbFLd66MwmquS4sc9GTIxOGYK6U5+vdt0Wc3fwCt38GFnWS82Ja9W0jFGv khNJHX+A601eeezW0itcBFQ9WZwx46z8jK4RVaRA0fT+cv5/z5ystlOTZ2eDE9ThaOATSvYsnjc RWIbVZdJ557bnvA== 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. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- lib/ref_tracker.c | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index a66cde325920780cfe7529ea9d827d0ee943318d..b6e0a87dd75eddef4d504419c0cf398ea65c19d8 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -64,22 +64,40 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit) return stats; } +#define __ostream_printf __printf(2, 3) + struct ostream { + void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); + char *prefix; char *buf; int size, used; }; +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 = stream->size - stream->used; + va_list args; + + va_start(args, fmt); + ret = vsnprintf(stream->buf + stream->used, len, fmt, args); + va_end(args); + stream->used += min(ret, len); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s = (stream); \ \ - if (!_s->buf) { \ - pr_err(fmt, ##args); \ - } else { \ - int ret, len = _s->size - _s->used; \ - ret = snprintf(_s->buf + _s->used, len, pr_fmt(fmt), ##args); \ - _s->used += min(ret, len); \ - } \ + _s->func(_s, fmt, ##args); \ }) static void @@ -98,8 +116,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, stats = 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; } @@ -109,14 +127,15 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, stack = stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] = 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 -= stats->stacks[i].count; } 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); kfree(sbuf); @@ -126,7 +145,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, unsigned int display_limit) { - struct ostream os = {}; + struct ostream os = { .func = pr_ostream_log, + .prefix = "ref_tracker: " }; __ref_tracker_dir_pr_ostream(dir, display_limit, &os); } @@ -145,7 +165,10 @@ EXPORT_SYMBOL(ref_tracker_dir_print); int ref_tracker_dir_snprint(struct ref_tracker_dir *dir, char *buf, size_t size) { - struct ostream os = { .buf = buf, .size = size }; + struct ostream os = { .func = pr_ostream_buf, + .prefix = "ref_tracker: ", + .buf = buf, + .size = size }; unsigned long flags; spin_lock_irqsave(&dir->lock, flags); From patchwork Thu Apr 17 13:11:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055563 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 17FD724C09A; Thu, 17 Apr 2025 13:11:25 +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=1744895486; cv=none; b=tBJcfv2t6QCZ+eEEtAMuMEWrzTVKSlw20d0U/XeVw0V1lU0PkN6FylMx1TRITa8Js7a6vWJw0lFWHkthN6qJYxM848HuP2VPKvpx12Dt8JIntjkawAs/Y9F14oBkg1M8L86ANtQdVXlk5NdmijaKf6guZtdfNN7cSa06/0iWypM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895486; c=relaxed/simple; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k+iPeMedT64BHXBDEIFB0+hpO9DysEmAWYDVHdydG9yfovDTh6vOaXtk/X+id94/BSwZiLVCOZBGOmRgRM4bWYYqrYU4TNyndgZKy0aCR6h7K9+njJ9MVWjeASiVh1ImoytBVDLlxgJwH8Ojs2XcMKiEU0z/FxxShgI+F+F2ocM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MQ8D1RDH; 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="MQ8D1RDH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 93F17C4CEEA; Thu, 17 Apr 2025 13:11:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895485; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MQ8D1RDHtmAN2jG4WAqAmBlSGJzLhLlxw8G+K3vA6rWZuHBpsRQ8VTL+Cnm7uAogI izPL41Tp11xH11Wh+pERILy7ClalB27x2/51gcJfRny3QMD3YP/E2srYswYkWLFVii +n2a3PKH4X019uMgu1aqiPSGgS/X7Er7ujHEr4/+AW9xXuYTWgp9+L9dZqmneLOfkb ECW2POriEXxnWUFZ5YaOH2vLfKZnAYQvSyDdhFdrmvsDf3uAWEMqCHd/hDk2/LvtzN rca6RSW7KkeMdsabuxL0Jo57Ag66Kk1FEzllWne+xtKxh3whrUGYo0N1Ymi31nulsV mB+u/1CH3ieiA== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:07 -0400 Subject: [PATCH v3 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-4-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1899; i=jlayton@kernel.org; h=from:subject:message-id; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP321YN2F1YjeV3Kjoqgiv/5q5RrzHMy/MKrh K3HY1aQK8uJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99gAKCRAADmhBGVaC FWtjEADBHGturis7doC2MJvP1kXI2piqnl55Mcwg9P56MIcn/7Q7kWWXJ+mGit7NsJIusTsgdHQ tKuA8xpPwDiSMNJVqzuyqbVwhzF2dPlGfh1Fv+krUrrBjKsa/l9GRmN0/QuAjLUHOdckbe9Eu/z XS2FUf7akH5cWCZx89e3bI6CsZ9pHeD7htAZL985wVRra2i0LlSzD57Ui8F5twJNIRFjWj69e6D TlVjHoxbQDN61OFKU483be0+B/9Cku338oPcts4AnQQXyLhMZXIv+HSiKLD5e0mLXEuBTEfNMOL NDbA7kbRTdm3TVedaFx8Ll5YRp55mGEsIbzOxMkvbp/k4Gzn3hS/rOCJYM+i5IitUhLYCPszSxt tS6Ys5xuX8DGOiPPDD7VQiahcVXIiaVE1ZA2U7NuaJHXFID75OnTsMZLU40CIp4fWxyuBcmZieJ kBC6y8C0WKZh1iT7ZeBhxHOfdOif/YUKGlN+Dt0IBD6lSINQydxoQuDftwawE/LD4k/Ug9NA/ep TFREerQ22/ykur8oJxJ29rvB1WFWNjNavHHdlmQz0TyBqyVoVT8O+qTs1PDiU6AUmLtY80h6yR6 54YJ4vrbHD7yCqr6BTiElVNYPpOP/4XaX+syqsCDiTtRU1S7Z15UtOQC0WFjrUpwrGyH47Sx5ay vQyTSXggLgqwXXA== 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. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- lib/ref_tracker.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index b6e0a87dd75eddef4d504419c0cf398ea65c19d8..4857bcb6d4bf557a0089f51328e75e8209e959e6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -8,6 +8,7 @@ #include #include #include +#include #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 @@ -70,6 +71,7 @@ struct ostream { void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); char *prefix; char *buf; + struct seq_file *seq; int size, used; }; @@ -93,6 +95,15 @@ static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *fmt, . stream->used += min(ret, len); } +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); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s = (stream); \ @@ -302,6 +313,20 @@ EXPORT_SYMBOL_GPL(ref_tracker_free); #ifdef CONFIG_DEBUG_FS #include +static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *seq) +{ + struct ostream os = { .func = pr_ostream_seq, + .prefix = "", + .seq = 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 = debugfs_create_dir("ref_tracker", NULL); From patchwork Thu Apr 17 13:11:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055564 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 4C38924DFE2; Thu, 17 Apr 2025 13:11: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=1744895487; cv=none; b=TwOsQRj0GOZeHlbUsyflWYnaKQGM/Wk4FDz4zws6EbjeG1DATjF+Hn/xOuh7KLuHjdOSciGeix6gC/fccnSm4yT8etU94v0NP9fXGrLjivjEHcM+AN7M8wlxN++mxXEol7ulD6yvJVE/m3SLKwQYh1Cs2pGPKv2CK/ljOmNx30I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895487; c=relaxed/simple; bh=6qwNLfV08a081p8l5NdqWtBl1v6XpiD3YghkRvP5Q64=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O4M9cISA5j4c2Jo/nbAgcEOrFCMdW7FI6pBF9fJJRoB0K7XKzWkD/nGSels3h27nv/tpxZOolOJ/rlat8f28cufaTFqnhPw0S7Xq8KqgACEVJ/Wo7r0vTbd1nh3nFFobkbLAHtGDv27hp6TxyKD/BKuGP6D1BM+V+BCpNJZvZ3I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sAXztTpY; 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="sAXztTpY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6754C4CEEB; Thu, 17 Apr 2025 13:11:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895486; bh=6qwNLfV08a081p8l5NdqWtBl1v6XpiD3YghkRvP5Q64=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sAXztTpYkuKtJiMo5Dj7Wk3egZifONi13v5uA4p2U5yfun1HN2oj/O9wMgFK+oonG AQTrOME0gWBdRQ07zcoN2+JrvGOQzpHUlL3YQcwLXrGEieDc64Ni8a+2qZYihpNpIj bbtQYWahhFNzgyakZfb9QBbYoO/TQmeXxoJzkDiqfzflMjuOh4FuOxgk/baNSCib8z DAprdPUA39Zu9KYEz0DVN5Yqq6oTYyOfc8Jtjd99nWKvmJ0CaWw7kSoSE8b4nSm4ai IU7w6piPvX/Iljsx4Tt4nZLkG/omMOuCL4kgFt8irurQW88fpIafCZbonEWgQmA3PW Zbh0mQSTIAZgg== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:08 -0400 Subject: [PATCH v3 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-5-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4721; i=jlayton@kernel.org; h=from:subject:message-id; bh=6qwNLfV08a081p8l5NdqWtBl1v6XpiD3YghkRvP5Q64=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP328Pnh4XIGauu7eNH34xHdvP3fkm9eq8aEt vRxMAuIfuqJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99gAKCRAADmhBGVaC FQQGD/9WZCNs2HMR8vVqnszE4GtbpM5AyYbLOPJI25pDLYtuFefAsoh0kHpfBCNwnqijOSnlLyx eCem742jNsj6REcDPqBIA6nhRN0Ek95G3cGTv0/iJQHF57utJvuGVyQ8n8SAeWwcjSF7SI5a1GV MCPoctKL0+KKFPJlsTmI5As2PWuH1wVZtZN0j40J0Ww1f62lSZs4MH0QVwGn+n1o2K/nxQIpfRK VJo+NNEt+CznLdw1GZgs/6CNbDWFUcdNZyyikPCG3tfCEBKsdlSNqMXkP4lOztei6gADmlX5Mx8 Kzb2yzk8pbX4O7MD60gHX4wGXPrnCSOvQCGkmr6jF5Qrt0c9zqz6BbO2HuUpLU9XKDMr5ZNiXpv jIQgx2kPDWwz6n2EjDYMAJOHuTTVc49D9/7peoiAvbTZw78249+t2M+1XoUJC3OJTumvdO/0Lui WJVBhcMBJ4cVsH6lIL8v/QsUtkNicS5HPt5rQMyIA8Qc6aSHoHQXHdRd+1GBYeDHpzDbv0mXI6d YQoCs3kMWiQv4rRNdDdJhNBkWYS3kqylo1FIze+QycWtw4vqE/A5ThKS+dMKFkYvbS+jnl4HP3j Y8pmkpUE0sW1jMBE/Ah2dMgXCwYLyVgz37/StJ6Aim9pT6OJTH5rIfGVgm78JfL2puaOx0zKmZR bYd0lRNpb9xLO1A== 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. Add a new function that other subsystems can optionally call to update the name field in the ref_tracker_dir and register a corresponding seq_file for it in the top-level ref_tracker directory. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- include/linux/ref_tracker.h | 13 +++++++++++ lib/ref_tracker.c | 57 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 8eac4f3d52547ccbaf9dcd09962ce80d26fbdff8..77a55a32c067216fa02ba349498f53bd289aee0c 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -5,6 +5,7 @@ #include #include #include +#include struct ref_tracker; @@ -17,6 +18,9 @@ struct ref_tracker_dir { bool dead; struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ +#ifdef CONFIG_DEBUG_FS + struct dentry *dentry; +#endif char name[32]; #endif }; @@ -34,10 +38,15 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, dir->dead = false; refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); +#ifdef CONFIG_DEBUG_FS + dir->dentry = NULL; +#endif strscpy(dir->name, name, sizeof(dir->name)); stack_depot_init(); } +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name); + void ref_tracker_dir_exit(struct ref_tracker_dir *dir); void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, @@ -62,6 +71,10 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, { } +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name) +{ +} + 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 4857bcb6d4bf557a0089f51328e75e8209e959e6..d53105b959c122a85558cbe84551726f6429e08e 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -31,6 +31,14 @@ struct ref_tracker_dir_stats { } stacks[]; }; +#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) { @@ -197,6 +205,7 @@ void ref_tracker_dir_exit(struct ref_tracker_dir *dir) bool leak = false; dir->dead = 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); @@ -327,6 +336,54 @@ static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_fil return os.used; } +static int ref_tracker_debugfs_show(struct seq_file *f, void *v) +{ + struct ref_tracker_dir *dir = 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 = inode->i_private; + + return single_open(filp, ref_tracker_debugfs_show, dir); +} + +static const struct file_operations ref_tracker_debugfs_fops = { + .owner = THIS_MODULE, + .open = ref_tracker_debugfs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +/** + * ref_tracker_dir_debugfs - create debugfs file for ref_tracker_dir + * @dir: ref_tracker_dir to finalize + * @name: updated name of the ref_tracker_dir + * + * In some cases, the name given to a ref_tracker_dir is based on incomplete information, + * and may not be unique. Call this to finalize the name of @dir, and create a debugfs + * file for it. If the name is not unique, a warning will be emitted but it is not fatal + * to the tracker. + */ +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name) +{ + dir->dentry = debugfs_create_file(name, S_IFREG | 0400, + ref_tracker_debug_dir, dir, + &ref_tracker_debugfs_fops); + if (IS_ERR(dir->dentry)) + pr_warn("ref_tracker: unable to create debugfs file for %s: %pe\n", + name, dir->dentry); +} +EXPORT_SYMBOL(ref_tracker_dir_debugfs); + +static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) +{ + debugfs_remove(dir->dentry); +} + static int __init ref_tracker_debugfs_init(void) { ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL); From patchwork Thu Apr 17 13:11:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055565 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 8CB5E24E015; Thu, 17 Apr 2025 13:11: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=1744895488; cv=none; b=Glai7o5LUriABJ3mTnwyhgNutih22M0YQ4Q6p8JuMdozLyeuiu1YdYF2UXH8NTr7xVFLhSWbPlU80RRhG4+9URvA0x4Wc0OqzU/dpdcpQkQCCtU7w6jgZMDww/5QahyUDu9F/km6klXnouRMN303AkLdfv/0uAKxx/h3BEWIJSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895488; c=relaxed/simple; bh=VxNG+3kfMXcsChPXbcYSbdNMZb9CE7AA2dokZt8gS0M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QA1VQ5+kHNy8ItvJ6qvX0k/lNfhsJywegQX6h4w7G0fnh9qRIUFJf8qk2X7YSB+nefTnGbw6KaLsEtw5n8TfKy9nlcWxjtg+le0omdlg3gW7xr0YLNKX0T0C3wFzbmEzlb7W9KtBC3VI94yKD4fQgSFJGv/PmwWHc1Wt4ywtHio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rsUJLo3X; 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="rsUJLo3X" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 052A8C4CEED; Thu, 17 Apr 2025 13:11:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895488; bh=VxNG+3kfMXcsChPXbcYSbdNMZb9CE7AA2dokZt8gS0M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rsUJLo3X/YuVNBFzu6WDHNJNMsLaQ7EoHx5N7+SkW/91E3KfCsfXPZMW54dRVhxSe kRkE0Ju5HnO6lR84Ur8z4w0MOOVp8doDqVayt0NeR1jR42KsR75l+eHnD9moz4/27L BBdCJqOgE/JnXw2LQ7SWvdR+xiW/PvoWjiteRiZtRx8L8un8Idbc39E4+N0Oy/Cz1m 6TXPi2VPMyoYcKJUDKHci3ggLhIzQroyi3gniXEfd3vgbLkQVQeOKU4S8BYAEoCL6y dMl+DpXVP+8g6P/gYZER/QMf543jUni7RaLQAQbgTwyN/P/RzbohUDoejTX47mQVf3 GAY2VJPY++etg== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:09 -0400 Subject: [PATCH v3 6/8] ref_tracker: widen the ref_tracker_dir.name field Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-6-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=887; i=jlayton@kernel.org; h=from:subject:message-id; bh=VxNG+3kfMXcsChPXbcYSbdNMZb9CE7AA2dokZt8gS0M=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP32DLpr0qqDT6PpD04gsIth9lWw0ZlM+D2O1 PHOqpkcRwmJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99gAKCRAADmhBGVaC FTi/D/9mynpNva2Y2s31P55ufruy9DtpXDT1sNWDjCjRuuYjQrqWIPPAZDVlJr7S6OlTbMxCVwl fujLlQdts7jskbME2uCpDtiCTaLgZItG1FaUecB+DvlrS9dd/aOhrrMo+he0N8rlX/u2Jcq5r/j I+wOlmsVm0C0sO8+SL2B3Xt/hNMwYselTSNGs5qanYLcKELFo66HcNseVrsYO9HqR6XFUQig4k9 rx8ycya02wzdegNIg2myg0WbES0EdHdSNQvsyu9mR2p+Jxr35kqdnOZLQRlcCUpSwJs6m7BghvM neoY56ozidgBAdwm/3YnwTZvyROHwoeq36mxNHPHjIubAlNHliIzvUwKFovNXupSzv518Hlo9cI knwmQdD2A3EJCxSXNudAoGC0PsKTsAgvI3+vvY5l2/3FpNOGUObFxu3Y0SL4tLVby4Zl62XjIIr 1wgWSP97aIvxYMhh+bxSnEVRwv+Ns20Yfcu7iri5mRsChReGUPVezPo4ED64Qh+ZuvVUzc1lEDL HxrUIQRs9f4jzIjjJKZ2VX4oiH9QscBWqLpoaEeNyOVXONXczFLK9yC0Sy/z19XFtkKXPJg9/el 3DHb6z/Qqee90dZo4Kd6KrlWgjq4npVGQeoM8xTe/0xTn5om5bVCGf88Newk/+QQwudgnR28po+ 8D0NrTX7UNdZyHw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Currently it's 32 bytes, but with the need to move to unique names for debugfs files, that won't be enough. Move to a 64 byte name field. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- include/linux/ref_tracker.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 77a55a32c067216fa02ba349498f53bd289aee0c..e47e81fd048812251eca2820a8b1e89f5750de3a 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -7,6 +7,8 @@ #include #include +#define REF_TRACKER_NAMESZ 64 + struct ref_tracker; struct ref_tracker_dir { @@ -21,7 +23,7 @@ struct ref_tracker_dir { #ifdef CONFIG_DEBUG_FS struct dentry *dentry; #endif - char name[32]; + char name[REF_TRACKER_NAMESZ]; #endif }; From patchwork Thu Apr 17 13:11:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055566 X-Patchwork-Delegate: kuba@kernel.org 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 D3D8C24E4DB; Thu, 17 Apr 2025 13:11: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=1744895489; cv=none; b=QAEacbGNB4OTbvDVeSGWdKu9sjgZHLV7CJeE60NCvRu+Zh3PnSiMrZFAL92ocjq/Mp17ET55VbjdKAHuo5ByLx+oLl/YD6uqZDiXi16ivLjrPbxHza2vc3kFuORSLIpOVz/pWkgyUH7ga8U+Sz2sG3tsD2pXBr6/TLoAz7YlsIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895489; c=relaxed/simple; bh=aWTjfRaEMobezFG2YZ4FN2sK+E4zsG1rhipWv1lxbAw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gJv0xwn1yJDZQmWWqPYzk+lfRmjtz0LK78a5RipgGWHgOxVKbp8AFzPY1Hm8CR6/QVTYzgJqcWUafhLVs4AOxWBlGMWIjA3EoXI1AERafYXwf/Qk9I91/4oEq8fkmPM29pHNQq69WHrt9tiu5TJTfIXznheauOYdpLv9R5eYeC0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LOGQmJYk; 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="LOGQmJYk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3AB60C4CEF3; Thu, 17 Apr 2025 13:11:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895489; bh=aWTjfRaEMobezFG2YZ4FN2sK+E4zsG1rhipWv1lxbAw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LOGQmJYkw6dJ0WI3d0aIK5DU7DHz9bIWVeKDmETU+MvUQvOEX8XJJDuZNDk4MAFTk BTC1FWPVz9RHj6+r7HFhHwIaQo1kbDBJU3jdMggbD2bYUo0DsKEM0Sp1+Pa1hCxtAV vHcIiWJoZx25Oh4eayF1XyQBfRL3ZY1X5XfbzTQ67lW2lTnyP1JBKepUEe0HqWulmA mpUaxoU0mKw9Xy2gIhXdLMV+Yw0CsX9eTd4kggGNNBlTxD+RvcXT84ew9mEjWgMGNL RReGlNNMqGN1CIinuFYhSFyP3cq0W9RuWT6wM847DnUSMa2/1USukJKuQeNNLKyjAt bUq7YicSMrzNQ== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:10 -0400 Subject: [PATCH v3 7/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-7-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1870; i=jlayton@kernel.org; h=from:subject:message-id; bh=aWTjfRaEMobezFG2YZ4FN2sK+E4zsG1rhipWv1lxbAw=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP33wfsZXF9OZOsXYJKn+4XxG4pgmpagfhh0H ps4ydpIRryJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99wAKCRAADmhBGVaC FYhhD/9tbmIoudXwkXHL3mGnASG0+sRoB+jMVGgDLT7hVec5WGkfL3L001+wgG0tx+EyOcNHHw9 COc1g47tILUmvuHhohuSGOSiSnp8BiufIfdLeNt6MPvhtGunKuq0+7o56gpioPfYxFsUFpdEBWL tORMdzIuL3M7aDtjKrolimdjYPqLf2yfXr/iWdnNnsBTdj9FfASYDB8ZX35jh/q851+jtF0H8f4 0RvOde9hR/dmapZxdOUFn8RWtc+3xUGixKFPIxOzQnfriN2RyYEqcOMtMwqjLOibimpqIc4HpPN GBBfOcLS8P3XUn/IH+LT6FUKKCztj3V/5XsJlOLlz2CEz6jxG0jMDF+xnrNltETbmp6JVuL8o9F J/FfHdKzDXJlchcyMsXFYsstMSv2eCzduBv2iZh0Xnm6H9CNEAn6LEiJV4RtFRTbkYbOyD2ZrOa PAJniIhr7ZW+B4BaeWoJj7JMCLEfd/XZX/FMPdGESLeseVRwtGb7NgB6YjtK3WLoy46/HgWq2I/ 2lua6HrkrMX4wbKBIkfvo1tgyN6ZkrmLJtpYS9faEauxpuosg6jqPx3z+zbnE4zbtLIl7XgXzGM 7j/VFPd1RMQ+kZjQE1hElS3KJWjPYI8HGmfzehlV/KYzUoWx/oUWFcvtc7wJHe4N+d5eczntjbU aDBY1V75yiU8tXQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Patchwork-Delegate: kuba@kernel.org After assigning the inode number to the namespace, use it to create a unique name for each netns refcount tracker and register the debugfs files for them. init_net is registered before the ref_tracker dir is created, so add a late_initcall() to register its files. Reviewed-by: Kuniyuki Iwashima Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn --- net/core/net_namespace.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 4303f2a4926243e2c0ff0c0387383cd8e0658019..cc8c3543e79b2b6948fdbe4080639e3dfbabda15 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -761,12 +761,44 @@ struct net *get_net_ns_by_pid(pid_t pid) } EXPORT_SYMBOL_GPL(get_net_ns_by_pid); +#ifdef CONFIG_NET_NS_REFCNT_TRACKER +static void net_ns_net_debugfs(struct net *net) +{ + char name[REF_TRACKER_NAMESZ]; + size_t len; + + len = snprintf(name, sizeof(name), "netns-%u-refcnt", net->ns.inum); + if (len < sizeof(name)) + ref_tracker_dir_debugfs(&net->refcnt_tracker, name); + + len = snprintf(name, sizeof(name), "netns-%u-notrefcnt", net->ns.inum); + if (len < sizeof(name)) + ref_tracker_dir_debugfs(&net->notrefcnt_tracker, name); +} + +static int __init init_net_debugfs(void) +{ + 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 = &netns_operations; #endif - return ns_alloc_inum(&net->ns); + ret = ns_alloc_inum(&net->ns); + if (!ret) + net_ns_net_debugfs(net); + return ret; } static __net_exit void net_ns_net_exit(struct net *net) From patchwork Thu Apr 17 13:11:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14055567 X-Patchwork-Delegate: kuba@kernel.org 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 A28AE24EAA2; Thu, 17 Apr 2025 13:11: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=1744895490; cv=none; b=AP9gDfO/BFkiK/8WiN7oq7004fk7UNchQNPv8Q073Ike7Nf9Q7ZRlV1Gy5FFMbJj+sLyigiPK7kBxFAXA3cjFoRuDWjueRionwonX+wsTY+ah/Lhltibm4qEkyfjIVaO+W/lHEtNMq1m/JFAOh5cCQr8U56c9dpZDSxr++KMsQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744895490; c=relaxed/simple; bh=WQDl9VxZJGJoqqYLaCnumasFC8mQLUW7g6SKFZtqLr8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fEk0ERprqbWSX1TIS/me9BLAMuZKGQPANWpkqykELjqfz4psUoFWvWa8IjbOqVxDy3vfgN6w8H7cMRNMOziPRKZpAUkhUI7Ao7578qy72AaxhEVJk/2EUOYTZFNxT4dYH3UOXvsJeGzDrk/k+izJZjMT1HRussJ6FNRVSUr+StA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c9UJQNFr; 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="c9UJQNFr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78972C4CEED; Thu, 17 Apr 2025 13:11:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744895490; bh=WQDl9VxZJGJoqqYLaCnumasFC8mQLUW7g6SKFZtqLr8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=c9UJQNFr4j85puVE4/6p/SXMaCK1qIz8a/vuV74smA+5l8+bOVVlrd8kpIDOUIGtp BjsbdUVOTRpHfvYXjvthGkB23+wl9rqDLy63U6Oj77ASp8Y6rP8yqeICF11vl6s7UX YQkjhTDgnKeTcwSk40owukbvs5C4Vj1YJpHTDvfOeuRJD3LMphVRpkUzX0vWcpijtg 2hx+qS7gTjkJKL5i+drZMid4E1JqcZ/wvZFWv585L0CcsMS7LrEhtOj9rjVGFLDyDv bupMr7CWgWRFuPxoKlLTc2WIThUSaUuEYDsUqFBM0455ndKfGaGeKdB8vIh4BvmTY6 g/shviy9PWY5Q== From: Jeff Layton Date: Thu, 17 Apr 2025 09:11:11 -0400 Subject: [PATCH v3 8/8] net: register debugfs file for net_device refcnt tracker Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250417-reftrack-dbgfs-v3-8-c3159428c8fb@kernel.org> References: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> In-Reply-To: <20250417-reftrack-dbgfs-v3-0-c3159428c8fb@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1217; i=jlayton@kernel.org; h=from:subject:message-id; bh=WQDl9VxZJGJoqqYLaCnumasFC8mQLUW7g6SKFZtqLr8=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBoAP33hN4AKv5WkgFj3GwxmPh8a5UgMisNFvL3/ 4ENENdZxM+JAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaAD99wAKCRAADmhBGVaC FfmiEACpfLEr5qELW0papwIkeezJNBKDC9gbQuhKOeZbJjw99mc55OS7nfmO1hF09lofIx7Hlfy sfcdzCj0+9DKI76uhzdVSqlREYAcaX3oyDJ5HdnzVCcoJ9zg2MQGGeKbLW2pjcV8h/hVzRKgHkM STTbaQfnUfYAQzc85s6R5cVmFtT2B8dpupBlSI8PZpF2T2wr1vBsD8twOXnYMcIYW6pQS4bUHuJ XIVKKGYY1+qn6wTGla/er6xpmr7m1O3L9T2ysMFHiP9kK5pZ3RMBB5agrnJvIdeTrybqKeRT1Ly QUeKGVg/T5+wqlmMLcUJcQFgYVH22KYvx5vbNwRX6v78T8fxJHKYvxgiHXGdHgsx9w+wAWCvwYu NVpaKct+r8PY3ZIhrUKrTm7MusfdYkZdbPImr2qo1BYmqObszhztV9O0Y/cwqP0H3wPqrxyyV0A 8CmVFPsOUgNsLf9Bc05oKmOHvUFfWAhcYrkEtrp2GqJv4jI9jnkMswVi4o/KQ3CMi4/jQVmeZYW FqBxXrRnSvs/gxf3aP8davFA1plQGf0mj8IeoreEFyhNbz7eS8eQAa0Rq0FT/RmDbU/BbuqPQO9 2uZrPgDfhYzcLI6l2Fndt2ro/4KmVPx7DsP+UHsJu4i/PsVOZ/l6CrM5l6Xr0LujGs1uJooXttp Tvk2NmxE71gydsA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Patchwork-Delegate: kuba@kernel.org As a nearly-final step in register_netdevice(), finalize the name in the refcount tracker, and register a debugfs file for it. Signed-off-by: Jeff Layton Reviewed-by: Andrew Lunn Reviewed-by: Kuniyuki Iwashima --- net/core/dev.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index 2f7f5fd9ffec7c0fc219eb6ba57d57a55134186e..19fa4f2caba28cadf55ed1655b69b6eb1170d799 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -10834,8 +10834,9 @@ static void netdev_free_phy_link_topology(struct net_device *dev) */ int register_netdevice(struct net_device *dev) { - int ret; struct net *net = dev_net(dev); + char name[REF_TRACKER_NAMESZ]; + int ret; BUILD_BUG_ON(sizeof(netdev_features_t) * BITS_PER_BYTE < NETDEV_FEATURE_COUNT); @@ -10994,6 +10995,9 @@ int register_netdevice(struct net_device *dev) dev->rtnl_link_state == RTNL_LINK_INITIALIZED) rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL); + /* Register debugfs file for the refcount tracker */ + if (snprintf(name, sizeof(name), "netdev-%s@%p", dev->name, dev) < sizeof(name)) + ref_tracker_dir_debugfs(&dev->refcnt_tracker, name); out: return ret;