Thread (5 messages) 5 messages, 4 authors, 2025-02-15

Re: [PATCH v2 net-next] checkpatch: Discourage a new use of rtnl_lock() variants.

From: Mateusz Polchlopek <hidden>
Date: 2025-02-14 09:25:23


On 2/14/2025 5:54 AM, Kuniyuki Iwashima wrote:
quoted hunk ↗ jump to hunk
rtnl_lock() is a "Big Kernel Lock" in the networking slow path
and still serialises most of RTM_(NEW|DEL|SET)* rtnetlink requests.

Commit 76aed95319da ("rtnetlink: Add per-netns RTNL.") started a
very large, in-progress, effort to make the RTNL lock scope per
network namespace.

However, there are still some patches that newly use rtnl_lock(),
which is now discouraged, and we need to revisit it later.

Let's warn about the case by checkpatch.

The target functions are as follows:

   * rtnl_lock()
   * rtnl_trylock()
   * rtnl_lock_interruptible()
   * rtnl_lock_killable()

and the warning will be like:

   WARNING: A new use of rtnl_lock() variants is discouraged, try to use rtnl_net_lock(net) variants
   #18: FILE: net/core/rtnetlink.c:79:
   +	rtnl_lock();

Signed-off-by: Kuniyuki Iwashima <redacted>
Reviewed-by: Simon Horman <horms@kernel.org>
---
v2:
   * Remove unnecessary "^\+.*"
   * Match "rtnl_lock	 ()"

v1: https://lore.kernel.org/netdev/20250211070447.25001-1-kuniyu@amazon.com/ (local)
---
  scripts/checkpatch.pl | 6 ++++++
  1 file changed, 6 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7b28ad331742..eca4f082ac3f 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6995,6 +6995,12 @@ sub process {
  #			}
  #		}
  
+# A new use of rtnl_lock() is discouraged as it's being converted to rtnl_net_lock(net).
+		if ($line =~ /\brtnl_(try)?lock(_interruptible|_killable)?\s*\(\)/) {
+			WARN("rtnl_lock()",
+			     "A new use of rtnl_lock() variants is discouraged, try to use rtnl_net_lock(net) variants\n" . $herecurr);
+		}
+
  # strcpy uses that should likely be strscpy
  		if ($line =~ /\bstrcpy\s*\(/) {
  			WARN("STRCPY",
Reviewed-by: Mateusz Polchlopek <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help