From: Xin Long Date: Sat, 18 Feb 2017 17:52:45 +0000 (+0800) Subject: sctp: flush out queue once assoc state falls into SHUTDOWN_PENDING X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b7018d0b63003c0474451991797113605f26ee81;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git sctp: flush out queue once assoc state falls into SHUTDOWN_PENDING This patch is to flush out queue when assoc state falls into SHUTDOWN_PENDING if there are still chunks in it, so that the data can be sent out as soon as possible before sending SHUTDOWN chunk. When sctp supports MSG_MORE flag in next patch, this improvement can also solve the problem that the chunks with MSG_MORE flag may be stuck in queue when closing an assoc. Signed-off-by: Xin Long Signed-off-by: David S. Miller --- diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 51abcc90fe75..25384fa82ba9 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c @@ -872,6 +872,10 @@ static void sctp_cmd_new_state(sctp_cmd_seq_t *cmds, if (!sctp_style(sk, UDP)) sk->sk_state_change(sk); } + + if (sctp_state(asoc, SHUTDOWN_PENDING) && + !sctp_outq_is_empty(&asoc->outqueue)) + sctp_outq_uncork(&asoc->outqueue, GFP_ATOMIC); } /* Helper function to delete an association. */