aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/sm_sideeffect.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp/sm_sideeffect.c')
-rw-r--r--net/sctp/sm_sideeffect.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 135567493119..b37a7adeb150 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -464,7 +464,7 @@ static void sctp_cmd_init_failed(sctp_cmd_seq_t *commands,
464 struct sctp_ulpevent *event; 464 struct sctp_ulpevent *event;
465 465
466 event = sctp_ulpevent_make_assoc_change(asoc,0, SCTP_CANT_STR_ASSOC, 466 event = sctp_ulpevent_make_assoc_change(asoc,0, SCTP_CANT_STR_ASSOC,
467 (__u16)error, 0, 0, 467 (__u16)error, 0, 0, NULL,
468 GFP_ATOMIC); 468 GFP_ATOMIC);
469 469
470 if (event) 470 if (event)
@@ -492,8 +492,13 @@ static void sctp_cmd_assoc_failed(sctp_cmd_seq_t *commands,
492 /* Cancel any partial delivery in progress. */ 492 /* Cancel any partial delivery in progress. */
493 sctp_ulpq_abort_pd(&asoc->ulpq, GFP_ATOMIC); 493 sctp_ulpq_abort_pd(&asoc->ulpq, GFP_ATOMIC);
494 494
495 event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST, 495 if (event_type == SCTP_EVENT_T_CHUNK && subtype.chunk == SCTP_CID_ABORT)
496 (__u16)error, 0, 0, 496 event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST,
497 (__u16)error, 0, 0, chunk,
498 GFP_ATOMIC);
499 else
500 event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST,
501 (__u16)error, 0, 0, NULL,
497 GFP_ATOMIC); 502 GFP_ATOMIC);
498 if (event) 503 if (event)
499 sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, 504 sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP,
@@ -1004,7 +1009,7 @@ static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype,
1004 status, state, event_type, subtype.chunk); 1009 status, state, event_type, subtype.chunk);
1005 BUG(); 1010 BUG();
1006 break; 1011 break;
1007 }; 1012 }
1008 1013
1009bail: 1014bail:
1010 return error; 1015 return error;
@@ -1484,7 +1489,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1484 printk(KERN_WARNING "Impossible command: %u, %p\n", 1489 printk(KERN_WARNING "Impossible command: %u, %p\n",
1485 cmd->verb, cmd->obj.ptr); 1490 cmd->verb, cmd->obj.ptr);
1486 break; 1491 break;
1487 }; 1492 }
1493
1488 if (error) 1494 if (error)
1489 break; 1495 break;
1490 } 1496 }