]> git.baikalelectronics.ru Git - kernel.git/commit
sctp: Fix bundling of SHUTDOWN with COOKIE-ACK
authorJere Leppänen <jere.leppanen@nokia.com>
Tue, 21 Apr 2020 19:03:41 +0000 (22:03 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Apr 2020 02:27:40 +0000 (19:27 -0700)
commit55a1670c1c573ffa090e3ce0b41cc4028d1d7094
treed0c369e6627892b36049b481a181b142a1c53e13
parent2455f7d485b69937b99cddd381702c961f41ee80
sctp: Fix bundling of SHUTDOWN with COOKIE-ACK

When we start shutdown in sctp_sf_do_dupcook_a(), we want to bundle
the SHUTDOWN with the COOKIE-ACK to ensure that the peer receives them
at the same time and in the correct order. This bundling was broken by
commit c933805a2589 ("sctp: set chunk transport correctly when it's a
new asoc"), which assigns a transport for the COOKIE-ACK, but not for
the SHUTDOWN.

Fix this by passing a reference to the COOKIE-ACK chunk as an argument
to sctp_sf_do_9_2_start_shutdown() and onward to
sctp_make_shutdown(). This way the SHUTDOWN chunk is assigned the same
transport as the COOKIE-ACK chunk, which allows them to be bundled.

In sctp_sf_do_9_2_start_shutdown(), the void *arg parameter was
previously unused. Now that we're taking it into use, it must be a
valid pointer to a chunk, or NULL. There is only one call site where
it's not, in sctp_sf_autoclose_timer_expire(). Fix that too.

Fixes: c933805a2589 ("sctp: set chunk transport correctly when it's a new asoc")
Signed-off-by: Jere Leppänen <jere.leppanen@nokia.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/sm_statefuns.c