Message ID | 20250108-net-sysctl-current-nsproxy-v1-0-5df34b2083e8@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | net: sysctl: avoid using current->nsproxy | expand |
Hello: This series was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Wed, 08 Jan 2025 16:34:28 +0100 you wrote: > As pointed out by Al Viro and Eric Dumazet in [1], using the 'net' > structure via 'current' is not recommended for different reasons: > > - Inconsistency: getting info from the reader's/writer's netns vs only > from the opener's netns as it is usually done. This could cause > unexpected issues when other operations are done on the wrong netns. > > [...] Here is the summary with links: - [net,1/9] mptcp: sysctl: avail sched: remove write access https://git.kernel.org/netdev/net/c/771ec78dc8b4 - [net,2/9] mptcp: sysctl: sched: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/d38e26e36206 - [net,3/9] mptcp: sysctl: blackhole timeout: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/92cf7a51bdae - [net,4/9] sctp: sysctl: cookie_hmac_alg: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/ea62dd138391 - [net,5/9] sctp: sysctl: rto_min/max: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/9fc17b76fc70 - [net,6/9] sctp: sysctl: auth_enable: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/15649fd5415e - [net,7/9] sctp: sysctl: udp_port: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/c10377bbc197 - [net,8/9] sctp: sysctl: plpmtud_probe_interval: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/6259d2484d0c - [net,9/9] rds: sysctl: rds_tcp_{rcv,snd}buf: avoid using current->nsproxy https://git.kernel.org/netdev/net/c/7f5611cbc487 You are awesome, thank you!
As pointed out by Al Viro and Eric Dumazet in [1], using the 'net' structure via 'current' is not recommended for different reasons: - Inconsistency: getting info from the reader's/writer's netns vs only from the opener's netns as it is usually done. This could cause unexpected issues when other operations are done on the wrong netns. - current->nsproxy can be NULL in some cases, resulting in an 'Oops' (null-ptr-deref), e.g. when the current task is exiting, as spotted by syzbot [1] using acct(2). The 'net' or 'pernet' structure can be obtained from the table->data using container_of(). Note that table->data could also be used directly in more places, but that would increase the size of this fix to replace all accesses via 'net'. Probably best to avoid that for fixes. Patches 2-9 remove access of net via current->nsproxy in sysfs handlers in MPTCP, SCTP and RDS. There are multiple patches doing almost the same thing, but the reason is to ease the backports. Patch 1 is not directly linked to this, but it is a small fix for MPTCP available_schedulers sysctl knob to explicitly mark it as read-only. Please note that this series does not address Al's comment [2]. In SCTP, some sysctl knobs set other sysfs-exposed variables for the min/max: two processes could then write two linked values at the same time, resulting in new values being outside the new boundaries. It would be great if SCTP developers can look at this problem. Link: https://lore.kernel.org/67769ecb.050a0220.3a8527.003f.GAE@google.com [1] Link: https://lore.kernel.org/netdev/20250105211158.GL1977892@ZenIV/ [2] Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> --- Matthieu Baerts (NGI0) (9): mptcp: sysctl: avail sched: remove write access mptcp: sysctl: sched: avoid using current->nsproxy mptcp: sysctl: blackhole timeout: avoid using current->nsproxy sctp: sysctl: cookie_hmac_alg: avoid using current->nsproxy sctp: sysctl: rto_min/max: avoid using current->nsproxy sctp: sysctl: auth_enable: avoid using current->nsproxy sctp: sysctl: udp_port: avoid using current->nsproxy sctp: sysctl: plpmtud_probe_interval: avoid using current->nsproxy rds: sysctl: rds_tcp_{rcv,snd}buf: avoid using current->nsproxy net/mptcp/ctrl.c | 17 +++++++++-------- net/rds/tcp.c | 39 ++++++++++++++++++++++++++++++++------- net/sctp/sysctl.c | 14 ++++++++------ 3 files changed, 49 insertions(+), 21 deletions(-) --- base-commit: db78475ba0d3c66d430f7ded2388cc041078a542 change-id: 20250108-net-sysctl-current-nsproxy-672ae21a873f Best regards,