summaryrefslogtreecommitdiff
path: root/scripts/basic/split-include.c
diff options
context:
space:
mode:
authorZhiling Zou <zhilinz@nebusec.ai>2026-10-27 12:46:49 +0800
committerPaolo Abeni <pabeni@redhat.com>2026-10-29 15:37:47 +0100
commitdda51b73721684637ab8e9bd97c78228b99c4bd2 (patch)
tree2edb1f1ebdcd21a033d660964d8342dc3ae1a00b /scripts/basic/split-include.c
parent8daacee78b3d2798fcf92398b6dff364eab64466 (diff)
downloadlinux-dda51b73721684637ab8e9bd97c78228b99c4bd2.tar.gz
linux-dda51b73721684637ab8e9bd97c78228b99c4bd2.zip
tcp: check congestion control restriction first
tcp_set_default_congestion_control() takes a reference to an algorithm before checking whether a non-init network namespace may select it. A rejected request returns -EPERM without dropping the reference. This affects module-backed algorithms too; BPF is not required. For example, after root loads tcp_bbr, a user with CAP_NET_ADMIN in a non-init network namespace can repeatedly request it as the default although it is not in tcp_allowed_congestion_control. Each rejected write leaks a module reference. Since module->refcnt is an atomic_t, 2^31 such writes can make it negative; later module_put() calls warn, and rmmod can hit the BUG_ON() in try_release_module_ref(). Check the namespace restriction before acquiring the reference, as tcp_set_congestion_control() already does. Fixes: 8d432592f30f ("net: Only allow init netns to set default tcp cong to a restricted algo") Cc: stable@vger.kernel.org Reported-by: Vega <vega@nebusec.ai> Suggested-by: Eric Dumazet <edumazet@kernel.org> Signed-off-by: Zhiling Zou <zhilinz@nebusec.ai> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Reviewed-by: Eric Dumazet <edumazet@kernel.org> Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev> Link: https://patch.msgid.link/71c142b2d45af6a2fe7fc6cd4a5ca52c53afbe23.1793075984.git.zhilinz@nebusec.ai Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'scripts/basic/split-include.c')
0 files changed, 0 insertions, 0 deletions