• Jere Leppänen's avatar
    sctp: Fix bundling of SHUTDOWN with COOKIE-ACK · 145cb2f7
    Jere Leppänen authored
    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 4ff40b86 ("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: 4ff40b86 ("sctp: set chunk transport correctly when it's a new asoc")
    Signed-off-by: default avatarJere Leppänen <jere.leppanen@nokia.com>
    Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    145cb2f7
sm_statefuns.c 204 KB