Closed cpaasch closed 1 year ago
Have you observed this one multiple times? if so perhaps we could add some debug patch in the export branch to dump possibly relevant additional info. Otherwise I have no idea :/
Haven't seen this one in a long while. We can close it!
While investigating #437, I noticed this:
https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_ipv4.c#L1861
that is, packets enqueued to subflows backlog did not check for mptcp-constraints before coalescing. The subflows socket lock is almost never acquired by the user-space, so the race is very hard to reproduce, but in theory multiple packets carrying separate DSS could land into the subflow backlog and being coalesced ignoring the DSS info - basically dropping the newer's packet DSS - and thus triggering the splat reported above.
We could address the issue introducing an additional mptcp_skb_can_collapse(skb, tail)
check in tcp_add_backlog(), but first I think it would be better to try to validate the above with a pktdrill test - we may need an new debug sockopt to keep the given subflow socket lock acquire for a specified time.
syzkaller-ID: 7bc336bf049b8e3d7efa860b71901d5e094b33ac
HEAD: de796451201b (07/11)
Trace:
No reproducer.
Kconfig: Kconfig_k7_clean.txt