]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commit
net: shaper: protect from late creation of hierarchy
authorJakub Kicinski <kuba@kernel.org>
Tue, 17 Mar 2026 16:10:14 +0000 (09:10 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 19 Mar 2026 12:47:15 +0000 (13:47 +0100)
commitd75ec7e8ba1979a1eb0b9211d94d749cdce849c8
tree60b2a6484b46408356c34ed15d8f9a15085df9bd
parent0f9ea7141f365b4f27226898e62220fb98ef8dc6
net: shaper: protect from late creation of hierarchy

We look up a netdev during prep of Netlink ops (pre- callbacks)
and take a ref to it. Then later in the body of the callback
we take its lock or RCU which are the actual protections.

The netdev may get unregistered in between the time we take
the ref and the time we lock it. We may allocate the hierarchy
after flush has already run, which would lead to a leak.

Take the instance lock in pre- already, this saves us from the race
and removes the need for dedicated lock/unlock callbacks completely.
After all, if there's any chance of write happening concurrently
with the flush - we're back to leaking the hierarchy.

We may take the lock for devices which don't support shapers but
we're only dealing with SET operations here, not taking the lock
would be optimizing for an error case.

Fixes: 93954b40f6a4 ("net-shapers: implement NL set and delete operations")
Link: https://lore.kernel.org/20260309173450.538026-1-p@1g4.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20260317161014.779569-2-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Documentation/netlink/specs/net_shaper.yaml
net/shaper/shaper.c
net/shaper/shaper_nl_gen.c
net/shaper/shaper_nl_gen.h