diff options
Diffstat (limited to 'net/sctp/sm_sideeffect.c')
-rw-r--r-- | net/sctp/sm_sideeffect.c | 45 |
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 | ||