netlink: add nlmsg_consume() and use it in devlink compat
authorJakub Kicinski <kuba@kernel.org>
Wed, 3 Apr 2024 20:22:59 +0000 (13:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 6 Apr 2024 17:20:14 +0000 (18:20 +0100)
devlink_compat_running_version() sticks out when running
netdevsim tests and watching dropped skbs. Add nlmsg_consume()
for cases were we want to free a netlink skb but it is expected,
rather than a drop. af_netlink code uses consume_skb() directly,
which is fine, but some may prefer the symmetry of nlmsg_new() /
nlmsg_consume().

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/netlink.h
net/devlink/dev.c

index 1d2bbcc50212db0f062f830e9e22e48c8fd6ffc0..61cef3bd2d313f45c551aeb8682296a3d3707219 100644 (file)
@@ -41,7 +41,8 @@
  *   nlmsg_get_pos()                   return current position in message
  *   nlmsg_trim()                      trim part of message
  *   nlmsg_cancel()                    cancel message construction
- *   nlmsg_free()                      free a netlink message
+ *   nlmsg_consume()                   free a netlink message (expected)
+ *   nlmsg_free()                      free a netlink message (drop)
  *
  * Message Sending:
  *   nlmsg_multicast()                 multicast message to several groups
@@ -1082,7 +1083,7 @@ static inline void nlmsg_cancel(struct sk_buff *skb, struct nlmsghdr *nlh)
 }
 
 /**
- * nlmsg_free - free a netlink message
+ * nlmsg_free - drop a netlink message
  * @skb: socket buffer of netlink message
  */
 static inline void nlmsg_free(struct sk_buff *skb)
@@ -1090,6 +1091,15 @@ static inline void nlmsg_free(struct sk_buff *skb)
        kfree_skb(skb);
 }
 
+/**
+ * nlmsg_consume - free a netlink message
+ * @skb: socket buffer of netlink message
+ */
+static inline void nlmsg_consume(struct sk_buff *skb)
+{
+       consume_skb(skb);
+}
+
 /**
  * nlmsg_multicast_filtered - multicast a netlink message with filter function
  * @sk: netlink socket to spread messages to
index c609deb42e889021af5bd2c3c5be191acecadfc2..13c73f50da3d1664383e29a8cf572bc78c3759ba 100644 (file)
@@ -1214,7 +1214,7 @@ static void __devlink_compat_running_version(struct devlink *devlink,
                }
        }
 free_msg:
-       nlmsg_free(msg);
+       nlmsg_consume(msg);
 }
 
 void devlink_compat_running_version(struct devlink *devlink,