OpenCloudOS-Kernel/net/mptcp
Paolo Abeni d9e4c12918 mptcp: only admit explicitly supported sockopt
Unrolling mcast state at msk dismantel time is bug prone, as
syzkaller reported:

======================================================
WARNING: possible circular locking dependency detected
5.11.0-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor905/8822 is trying to acquire lock:
ffffffff8d678fe8 (rtnl_mutex){+.+.}-{3:3}, at: ipv6_sock_mc_close+0xd7/0x110 net/ipv6/mcast.c:323

but task is already holding lock:
ffff888024390120 (sk_lock-AF_INET6){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1600 [inline]
ffff888024390120 (sk_lock-AF_INET6){+.+.}-{0:0}, at: mptcp6_release+0x57/0x130 net/mptcp/protocol.c:3507

which lock already depends on the new lock.

Instead we can simply forbid any mcast-related setsockopt.
Let's do the same with all other non supported sockopts.

Fixes: 717e79c867 ("mptcp: Add setsockopt()/getsockopt() socket operations")
Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-04-16 15:23:09 -07:00
..
Kconfig mptcp: depends on IPV6 but not as a module 2020-10-21 08:05:40 -07:00
Makefile mptcp: move sockopt function into a new file 2021-04-16 15:23:09 -07:00
crypto.c crypto: sha - split sha.h into sha1.h and sha2.h 2020-11-20 14:45:33 +11:00
crypto_test.c mptcp: move crypto test to KUNIT 2020-06-26 16:21:39 -07:00
ctrl.c mptcp: add a new sysctl add_addr_timeout 2020-11-04 17:45:53 -08:00
diag.c mptcp: allow dumping subflow context to userspace 2020-03-29 22:14:48 -07:00
mib.c mptcp: add active MPC mibs 2021-04-02 14:21:50 -07:00
mib.h mptcp: add active MPC mibs 2021-04-02 14:21:50 -07:00
mptcp_diag.c mptcp: add local addr info in mptcp_info 2021-02-15 15:09:14 -08:00
options.c mptcp: drop all sub-options except ADD_ADDR when the echo bit is set 2021-04-07 14:09:40 -07:00
pm.c mptcp: rename mptcp_pm_nl_add_addr_send_ack 2021-03-26 15:05:15 -07:00
pm_netlink.c mptcp: move flags and ifindex out of mptcp_addr_info 2021-04-07 14:09:39 -07:00
protocol.c mptcp: move sockopt function into a new file 2021-04-16 15:23:09 -07:00
protocol.h mptcp: move sockopt function into a new file 2021-04-16 15:23:09 -07:00
sockopt.c mptcp: only admit explicitly supported sockopt 2021-04-16 15:23:09 -07:00
subflow.c mptcp: move flags and ifindex out of mptcp_addr_info 2021-04-07 14:09:39 -07:00
syncookies.c mptcp: fix syncookie build error on UP 2020-08-01 11:52:55 -07:00
token.c mptcp: token: fix unititialized variable 2020-11-03 13:08:30 -08:00
token_test.c mptcp: introduce token KUNIT self-tests 2020-06-26 16:21:39 -07:00