Commit 5eecd85c authored by Adrian Moreno's avatar Adrian Moreno Committed by Jakub Kicinski
Browse files

psample: adjust size if rate_as_probability is set



If PSAMPLE_ATTR_SAMPLE_PROBABILITY flag is to be sent, the available
size for the packet data has to be adjusted accordingly.

Also, check the error code returned by nla_put_flag.

Fixes: 7b1b2b60 ("net: psample: allow using rate as probability")
Signed-off-by: default avatarAdrian Moreno <amorenoz@redhat.com>
Reviewed-by: default avatarAaron Conole <aconole@redhat.com>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20241217113739.3929300-1-amorenoz@redhat.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 5eb70dbe
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -393,7 +393,9 @@ void psample_sample_packet(struct psample_group *group,
		   nla_total_size_64bit(sizeof(u64)) +	/* timestamp */
		   nla_total_size(sizeof(u16)) +	/* protocol */
		   (md->user_cookie_len ?
		    nla_total_size(md->user_cookie_len) : 0); /* user cookie */
		    nla_total_size(md->user_cookie_len) : 0) + /* user cookie */
		   (md->rate_as_probability ?
		    nla_total_size(0) : 0);	/* rate as probability */

#ifdef CONFIG_INET
	tun_info = skb_tunnel_info(skb);
@@ -498,8 +500,9 @@ void psample_sample_packet(struct psample_group *group,
		    md->user_cookie))
		goto error;

	if (md->rate_as_probability)
		nla_put_flag(nl_skb, PSAMPLE_ATTR_SAMPLE_PROBABILITY);
	if (md->rate_as_probability &&
	    nla_put_flag(nl_skb, PSAMPLE_ATTR_SAMPLE_PROBABILITY))
		goto error;

	genlmsg_end(nl_skb, data);
	genlmsg_multicast_netns(&psample_nl_family, group->net, nl_skb, 0,