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.c45
1 files changed, 22 insertions, 23 deletions
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 6773d7803627..6eecf7e6338d 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -1268,14 +1268,14 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1268 sctp_outq_uncork(&asoc->outqueue); 1268 sctp_outq_uncork(&asoc->outqueue);
1269 local_cork = 0; 1269 local_cork = 0;
1270 } 1270 }
1271 asoc = cmd->obj.ptr; 1271 asoc = cmd->obj.asoc;
1272 /* Register with the endpoint. */ 1272 /* Register with the endpoint. */
1273 sctp_endpoint_add_asoc(ep, asoc); 1273 sctp_endpoint_add_asoc(ep, asoc);
1274 sctp_hash_established(asoc); 1274 sctp_hash_established(asoc);
1275 break; 1275 break;
1276 1276
1277 case SCTP_CMD_UPDATE_ASSOC: 1277 case SCTP_CMD_UPDATE_ASSOC:
1278 sctp_assoc_update(asoc, cmd->obj.ptr); 1278 sctp_assoc_update(asoc, cmd->obj.asoc);
1279 break; 1279 break;
1280 1280
1281 case SCTP_CMD_PURGE_OUTQUEUE: 1281 case SCTP_CMD_PURGE_OUTQUEUE:
@@ -1315,7 +1315,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1315 break; 1315 break;
1316 1316
1317 case SCTP_CMD_PROCESS_FWDTSN: 1317 case SCTP_CMD_PROCESS_FWDTSN:
1318 sctp_cmd_process_fwdtsn(&asoc->ulpq, cmd->obj.ptr); 1318 sctp_cmd_process_fwdtsn(&asoc->ulpq, cmd->obj.chunk);
1319 break; 1319 break;
1320 1320
1321 case SCTP_CMD_GEN_SACK: 1321 case SCTP_CMD_GEN_SACK:
@@ -1331,7 +1331,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1331 case SCTP_CMD_PROCESS_SACK: 1331 case SCTP_CMD_PROCESS_SACK:
1332 /* Process an inbound SACK. */ 1332 /* Process an inbound SACK. */
1333 error = sctp_cmd_process_sack(commands, asoc, 1333 error = sctp_cmd_process_sack(commands, asoc,
1334 cmd->obj.ptr); 1334 cmd->obj.chunk);
1335 break; 1335 break;
1336 1336
1337 case SCTP_CMD_GEN_INIT_ACK: 1337 case SCTP_CMD_GEN_INIT_ACK:
@@ -1352,15 +1352,15 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1352 * layer which will bail. 1352 * layer which will bail.
1353 */ 1353 */
1354 error = sctp_cmd_process_init(commands, asoc, chunk, 1354 error = sctp_cmd_process_init(commands, asoc, chunk,
1355 cmd->obj.ptr, gfp); 1355 cmd->obj.init, gfp);
1356 break; 1356 break;
1357 1357
1358 case SCTP_CMD_GEN_COOKIE_ECHO: 1358 case SCTP_CMD_GEN_COOKIE_ECHO:
1359 /* Generate a COOKIE ECHO chunk. */ 1359 /* Generate a COOKIE ECHO chunk. */
1360 new_obj = sctp_make_cookie_echo(asoc, chunk); 1360 new_obj = sctp_make_cookie_echo(asoc, chunk);
1361 if (!new_obj) { 1361 if (!new_obj) {
1362 if (cmd->obj.ptr) 1362 if (cmd->obj.chunk)
1363 sctp_chunk_free(cmd->obj.ptr); 1363 sctp_chunk_free(cmd->obj.chunk);
1364 goto nomem; 1364 goto nomem;
1365 } 1365 }
1366 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, 1366 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY,
@@ -1369,9 +1369,9 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1369 /* If there is an ERROR chunk to be sent along with 1369 /* If there is an ERROR chunk to be sent along with
1370 * the COOKIE_ECHO, send it, too. 1370 * the COOKIE_ECHO, send it, too.
1371 */ 1371 */
1372 if (cmd->obj.ptr) 1372 if (cmd->obj.chunk)
1373 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, 1373 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY,
1374 SCTP_CHUNK(cmd->obj.ptr)); 1374 SCTP_CHUNK(cmd->obj.chunk));
1375 1375
1376 if (new_obj->transport) { 1376 if (new_obj->transport) {
1377 new_obj->transport->init_sent_count++; 1377 new_obj->transport->init_sent_count++;
@@ -1417,18 +1417,18 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1417 case SCTP_CMD_CHUNK_ULP: 1417 case SCTP_CMD_CHUNK_ULP:
1418 /* Send a chunk to the sockets layer. */ 1418 /* Send a chunk to the sockets layer. */
1419 SCTP_DEBUG_PRINTK("sm_sideff: %s %p, %s %p.\n", 1419 SCTP_DEBUG_PRINTK("sm_sideff: %s %p, %s %p.\n",
1420 "chunk_up:", cmd->obj.ptr, 1420 "chunk_up:", cmd->obj.chunk,
1421 "ulpq:", &asoc->ulpq); 1421 "ulpq:", &asoc->ulpq);
1422 sctp_ulpq_tail_data(&asoc->ulpq, cmd->obj.ptr, 1422 sctp_ulpq_tail_data(&asoc->ulpq, cmd->obj.chunk,
1423 GFP_ATOMIC); 1423 GFP_ATOMIC);
1424 break; 1424 break;
1425 1425
1426 case SCTP_CMD_EVENT_ULP: 1426 case SCTP_CMD_EVENT_ULP:
1427 /* Send a notification to the sockets layer. */ 1427 /* Send a notification to the sockets layer. */
1428 SCTP_DEBUG_PRINTK("sm_sideff: %s %p, %s %p.\n", 1428 SCTP_DEBUG_PRINTK("sm_sideff: %s %p, %s %p.\n",
1429 "event_up:",cmd->obj.ptr, 1429 "event_up:",cmd->obj.ulpevent,
1430 "ulpq:",&asoc->ulpq); 1430 "ulpq:",&asoc->ulpq);
1431 sctp_ulpq_tail_event(&asoc->ulpq, cmd->obj.ptr); 1431 sctp_ulpq_tail_event(&asoc->ulpq, cmd->obj.ulpevent);
1432 break; 1432 break;
1433 1433
1434 case SCTP_CMD_REPLY: 1434 case SCTP_CMD_REPLY:
@@ -1438,12 +1438,12 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1438 local_cork = 1; 1438 local_cork = 1;
1439 } 1439 }
1440 /* Send a chunk to our peer. */ 1440 /* Send a chunk to our peer. */
1441 error = sctp_outq_tail(&asoc->outqueue, cmd->obj.ptr); 1441 error = sctp_outq_tail(&asoc->outqueue, cmd->obj.chunk);
1442 break; 1442 break;
1443 1443
1444 case SCTP_CMD_SEND_PKT: 1444 case SCTP_CMD_SEND_PKT:
1445 /* Send a full packet to our peer. */ 1445 /* Send a full packet to our peer. */
1446 packet = cmd->obj.ptr; 1446 packet = cmd->obj.packet;
1447 sctp_packet_transmit(packet); 1447 sctp_packet_transmit(packet);
1448 sctp_ootb_pkt_free(packet); 1448 sctp_ootb_pkt_free(packet);
1449 break; 1449 break;
@@ -1480,7 +1480,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1480 break; 1480 break;
1481 1481
1482 case SCTP_CMD_SETUP_T2: 1482 case SCTP_CMD_SETUP_T2:
1483 sctp_cmd_setup_t2(commands, asoc, cmd->obj.ptr); 1483 sctp_cmd_setup_t2(commands, asoc, cmd->obj.chunk);
1484 break; 1484 break;
1485 1485
1486 case SCTP_CMD_TIMER_START_ONCE: 1486 case SCTP_CMD_TIMER_START_ONCE:
@@ -1514,7 +1514,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1514 break; 1514 break;
1515 1515
1516 case SCTP_CMD_INIT_CHOOSE_TRANSPORT: 1516 case SCTP_CMD_INIT_CHOOSE_TRANSPORT:
1517 chunk = cmd->obj.ptr; 1517 chunk = cmd->obj.chunk;
1518 t = sctp_assoc_choose_alter_transport(asoc, 1518 t = sctp_assoc_choose_alter_transport(asoc,
1519 asoc->init_last_sent_to); 1519 asoc->init_last_sent_to);
1520 asoc->init_last_sent_to = t; 1520 asoc->init_last_sent_to = t;
@@ -1665,17 +1665,16 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1665 break; 1665 break;
1666 1666
1667 case SCTP_CMD_PART_DELIVER: 1667 case SCTP_CMD_PART_DELIVER:
1668 sctp_ulpq_partial_delivery(&asoc->ulpq, cmd->obj.ptr, 1668 sctp_ulpq_partial_delivery(&asoc->ulpq, GFP_ATOMIC);
1669 GFP_ATOMIC);
1670 break; 1669 break;
1671 1670
1672 case SCTP_CMD_RENEGE: 1671 case SCTP_CMD_RENEGE:
1673 sctp_ulpq_renege(&asoc->ulpq, cmd->obj.ptr, 1672 sctp_ulpq_renege(&asoc->ulpq, cmd->obj.chunk,
1674 GFP_ATOMIC); 1673 GFP_ATOMIC);
1675 break; 1674 break;
1676 1675
1677 case SCTP_CMD_SETUP_T4: 1676 case SCTP_CMD_SETUP_T4:
1678 sctp_cmd_setup_t4(commands, asoc, cmd->obj.ptr); 1677 sctp_cmd_setup_t4(commands, asoc, cmd->obj.chunk);
1679 break; 1678 break;
1680 1679
1681 case SCTP_CMD_PROCESS_OPERR: 1680 case SCTP_CMD_PROCESS_OPERR:
@@ -1734,8 +1733,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
1734 break; 1733 break;
1735 1734
1736 default: 1735 default:
1737 pr_warn("Impossible command: %u, %p\n", 1736 pr_warn("Impossible command: %u\n",
1738 cmd->verb, cmd->obj.ptr); 1737 cmd->verb);
1739 break; 1738 break;
1740 } 1739 }
1741 1740