]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: shaper: enforce singleton NETDEV scope with id 0
authorJakub Kicinski <kuba@kernel.org>
Sun, 10 May 2026 19:29:03 +0000 (12:29 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 12 May 2026 14:15:00 +0000 (16:15 +0200)
The NETDEV scope represents a singleton root shaper in the per-device
hierarchy.  All code assumes NETDEV shapers have id 0:
net_shaper_default_parent() hardcodes parent->id = 0 when returning
the NETDEV parent for QUEUE/NODE children, and the UAPI documentation
describes NETDEV scope as "the main shaper" (singular, not plural).

Make sure we reject non-0 IDs.

Fixes: 4b623f9f0f59 ("net-shapers: implement NL get operation")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20260510192904.3987113-10-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/shaper/shaper.c

index eb049847fed65e162bb7d8cb8955e8953d7d414f..4ae3ee6764a0a4978c681cfe7c07922af678cb69 100644 (file)
@@ -482,6 +482,12 @@ static int net_shaper_parse_handle(const struct nlattr *attr,
        else if (handle->scope == NET_SHAPER_SCOPE_NODE)
                id = NET_SHAPER_ID_UNSPEC;
 
+       if (id && handle->scope == NET_SHAPER_SCOPE_NETDEV) {
+               NL_SET_ERR_MSG_ATTR(info->extack, id_attr,
+                                   "Netdev scope is a singleton, must use ID 0");
+               return -EINVAL;
+       }
+
        handle->id = id;
        return 0;
 }