RE: [PATCH net] sctp: fix a success return may hide an error
From: David Laight <hidden>
Date: 2016-08-16 16:04:19
Also in:
linux-sctp
From: Xin Long
Sent: 16 August 2016 12:34quoted
quoted
Both sctp_outq_flush_rtx and sctp_packet_transmit can ONLY return one error (-ENOMEM), as sctp_outq_flush_rtx also calls sctp_packet_transmit.What is the effect of the error? If it is 'just' equivalent to a lost ethernet packet (and the skb (etc) is freed) then the protocol will recover. If it is anything else then the error path is probably wrong.This err returns back to sctp_sendmsg, there sctp will abort asoc.
That doesn't seem a good idea. You don't want to abort the association if there is a transient memory allocation failure. You also can't drop data chunks.
in this function, sctp tries to do 3 things: 1. flush rtx queue 2. transmit the packet of current transport 3. flush all the transports. Now sctp would do them one by one, even if one of them returns err.
You probably need to explain what 'flush' means here. I think it means 'process and send', but it might mean 'discard the contents of'. Last time I looked at the sctp code my head exploded. ISTR it is a mess of timing errors waiting to happen (and I write comms protocol stack code for a living). David