On Wed, 2019-10-23 at 14:19 +0200, Matthieu Baerts wrote:
On 23/10/2019 00:54, Peter Krystad wrote:
> Observed crash when running against out-of-tree kernel with
> mis-matched checksum options.
Thank you for doing this kind of tests!
It was an accident, I forgot to disable checksum on the out-of-tree side...
> Do not process incoming options if the subflow is not MPTCP.
Are we not supposed not to deal with MPTCP options after a fallback to TCP?
If we fallback to TCP, should we not always set 'tp->is_mptcp' to false?
Currently for fallback we set is_mptcp=0 after the connection negotiation is
complete [in mptcp_accept()] and presumeably everything is fine after that
point. In this specific situation (we don't send MP_CAPABLE in the third ack
because we don't support checksum) the out-of-tree kernel resends the syn-ack
with DSS options, and these packets are processed before is_mptcp is cleared.
I think we are in uncharted territory here because of how we reject the other
sides request for checksums, but this check can't hurt.