Commit 8e69b345 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

netlink: add nlmsg_consume() and use it in devlink compat



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: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9f06f87f
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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,