Signed-off-by: Marcelo Ricardo Leitner <marcelo.leit...@gmail.com>
---
 net/sctp/sm_statefuns.c | 58 ++++++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 30 deletions(-)

diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index 
32587b1f84e729221965e270607fea7ef93a7430..a95915ef9dbabad30f6171f77b26feab61752f36
 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -3501,45 +3501,43 @@ static sctp_disposition_t sctp_sf_shut_8_4_5(struct net 
*net,
        struct sctp_chunk *shut;
 
        packet = sctp_ootb_pkt_new(net, asoc, chunk);
+       if (!packet)
+               return SCTP_DISPOSITION_NOMEM;
 
-       if (packet) {
-               /* Make an SHUTDOWN_COMPLETE.
-                * The T bit will be set if the asoc is NULL.
-                */
-               shut = sctp_make_shutdown_complete(asoc, chunk);
-               if (!shut) {
-                       sctp_ootb_pkt_free(packet);
-                       return SCTP_DISPOSITION_NOMEM;
-               }
-
-               /* Reflect vtag if T-Bit is set */
-               if (sctp_test_T_bit(shut))
-                       packet->vtag = ntohl(chunk->sctp_hdr->vtag);
+       /* Make an SHUTDOWN_COMPLETE.
+        * The T bit will be set if the asoc is NULL.
+        */
+       shut = sctp_make_shutdown_complete(asoc, chunk);
+       if (!shut) {
+               sctp_ootb_pkt_free(packet);
+               return SCTP_DISPOSITION_NOMEM;
+       }
 
-               /* Set the skb to the belonging sock for accounting.  */
-               shut->skb->sk = ep->base.sk;
+       /* Reflect vtag if T-Bit is set */
+       if (sctp_test_T_bit(shut))
+               packet->vtag = ntohl(chunk->sctp_hdr->vtag);
 
-               sctp_packet_append_chunk(packet, shut);
+       /* Set the skb to the belonging sock for accounting.  */
+       shut->skb->sk = ep->base.sk;
 
-               sctp_add_cmd_sf(commands, SCTP_CMD_SEND_PKT,
-                               SCTP_PACKET(packet));
+       sctp_packet_append_chunk(packet, shut);
 
-               SCTP_INC_STATS(net, SCTP_MIB_OUTCTRLCHUNKS);
+       sctp_add_cmd_sf(commands, SCTP_CMD_SEND_PKT,
+                       SCTP_PACKET(packet));
 
-               /* If the chunk length is invalid, we don't want to process
-                * the reset of the packet.
-                */
-               if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
-                       return sctp_sf_pdiscard(net, ep, asoc, type, arg, 
commands);
+       SCTP_INC_STATS(net, SCTP_MIB_OUTCTRLCHUNKS);
 
-               /* We need to discard the rest of the packet to prevent
-                * potential bomming attacks from additional bundled chunks.
-                * This is documented in SCTP Threats ID.
-                */
+       /* If the chunk length is invalid, we don't want to process
+        * the reset of the packet.
+        */
+       if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
                return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
-       }
 
-       return SCTP_DISPOSITION_NOMEM;
+       /* We need to discard the rest of the packet to prevent
+        * potential bomming attacks from additional bundled chunks.
+        * This is documented in SCTP Threats ID.
+        */
+       return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
 }
 
 /*
-- 
2.9.3

Reply via email to