[PATCH net v4 0/3] tipc: fix netlink gate and receive-path bugs
From: Michael Bommarito
Date: Wed Jun 10 2026 - 08:43:01 EST
This is v4 of the public TIPC series. The only change from v3 is in
patch 1: TIPC_NL_MEDIA_SET now uses GENL_UNS_ADMIN_PERM like the other
mutators, instead of GENL_ADMIN_PERM, so the whole series uses the
namespace-aware CAP_NET_ADMIN check that matches the legacy TIPC netlink
path. Patches 2 and 3 are unchanged.
Patch 1 gives the TIPCv2 mutating generic-netlink operations the admin
gate the legacy API already has, so a local unprivileged process can no
longer change TIPC state. Patch 2 drops CONN_ACK messages that
acknowledge more outstanding sends than exist, preventing the
snt_unacked underflow. Patch 3 rejects peer bindings with lower > upper,
which would otherwise leak binding-table memory.
Changes in v4:
- Patch 1: use GENL_UNS_ADMIN_PERM for TIPC_NL_MEDIA_SET as well,
rather than GENL_ADMIN_PERM. This keeps the same namespace-aware
CAP_NET_ADMIN check that netlink_net_capable() performs on the
legacy path, so CAP_NET_ADMIN holders in a non-initial user
namespace (containers) keep working (Tung Quang Nguyen).
Changes in v3:
- Drop the discovery-message length patch; tipc_msg_validate()
already rejects the short messages it guarded against (Tung Quang
Nguyen).
- Patch 2 (snt_unacked): drop the conn_ack local and test
tsk->snt_unacked against msg_conn_ack() inline (Tung Quang Nguyen).
- Patch 3 (inverted ranges): restructure the declaration block, moving
ua below key at the maintainer's request (Tung Quang Nguyen).
Changes in v2:
- Patch 1 uses GENL_ADMIN_PERM for TIPC_NL_MEDIA_SET and
GENL_UNS_ADMIN_PERM for the netns-scoped mutators.
- Patch 2 validates msg_conn_ack() at the start of the CONN_ACK block
and drops invalid messages instead of capping the value.
- Patch 3 reorders the new u32 declarations in reverse-Xmas-tree order.
Michael Bommarito (3):
tipc: require net admin for TIPCv2 netlink mutators
tipc: prevent snt_unacked underflow on CONN_ACK
tipc: reject inverted service ranges from peer bindings
net/tipc/name_distr.c | 13 +++++++++++--
net/tipc/netlink.c | 12 ++++++++++++
net/tipc/socket.c | 3 +++
3 files changed, 26 insertions(+), 2 deletions(-)
--
2.53.0