Commit ce372e86 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Paolo Abeni
Browse files

net: shaper: reject QUEUE scope handle with missing id



net_shaper_parse_handle() does not enforce that the user provides
the handle ID. For NODE the ID defaults to UNSPEC for all other
cases it defaults to 0.

For NETDEV 0 is the only option. For QUEUE defaulting to 0 makes
less intuitive sense. Specifically because the behavior should
(IMHO) be the same for all cases where there may be more than
one ID (QUEUE and NODE).

We should either document this as intentional or reject.
I picked the latter with no strong conviction.

Fixes: 4b623f9f ("net-shapers: implement NL get operation")
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20260510192904.3987113-11-kuba@kernel.org


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent b62b29e6
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -477,10 +477,15 @@ static int net_shaper_parse_handle(const struct nlattr *attr,
	 * shaper (any other value).
	 */
	id_attr = tb[NET_SHAPER_A_HANDLE_ID];
	if (id_attr)
	if (id_attr) {
		id = nla_get_u32(id_attr);
	else if (handle->scope == NET_SHAPER_SCOPE_NODE)
	} else if (handle->scope == NET_SHAPER_SCOPE_NODE) {
		id = NET_SHAPER_ID_UNSPEC;
	} else if (handle->scope == NET_SHAPER_SCOPE_QUEUE) {
		NL_SET_ERR_ATTR_MISS(info->extack, attr,
				     NET_SHAPER_A_HANDLE_ID);
		return -EINVAL;
	}

	if (id && handle->scope == NET_SHAPER_SCOPE_NETDEV) {
		NL_SET_ERR_MSG_ATTR(info->extack, id_attr,