Commit a52445ae authored by David S. Miller's avatar David S. Miller

Merge branch 'sctp-bad-revert'

Xin Long says:

====================
sctp: fix the incorrect revert

commit 35b4f244 ("sctp: do asoc update earlier in
sctp_sf_do_dupcook_a") only keeps the SHUTDOWN and
COOKIE-ACK with the same asoc, not transport.

So instead of revert commit 145cb2f7 ("sctp: Fix bundling
of SHUTDOWN with COOKIE-ACK"), we should revert 12dfd78e
("sctp: Fix SHUTDOWN CTSN Ack in the peer restart case").
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 643001b4 7aa4e547
...@@ -858,11 +858,7 @@ struct sctp_chunk *sctp_make_shutdown(const struct sctp_association *asoc, ...@@ -858,11 +858,7 @@ struct sctp_chunk *sctp_make_shutdown(const struct sctp_association *asoc,
struct sctp_chunk *retval; struct sctp_chunk *retval;
__u32 ctsn; __u32 ctsn;
if (chunk && chunk->asoc) ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
ctsn = sctp_tsnmap_get_ctsn(&chunk->asoc->peer.tsn_map);
else
ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
shut.cum_tsn_ack = htonl(ctsn); shut.cum_tsn_ack = htonl(ctsn);
retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0, retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0,
......
...@@ -1903,7 +1903,7 @@ static enum sctp_disposition sctp_sf_do_dupcook_a( ...@@ -1903,7 +1903,7 @@ static enum sctp_disposition sctp_sf_do_dupcook_a(
*/ */
sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(repl)); sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(repl));
return sctp_sf_do_9_2_start_shutdown(net, ep, asoc, return sctp_sf_do_9_2_start_shutdown(net, ep, asoc,
SCTP_ST_CHUNK(0), NULL, SCTP_ST_CHUNK(0), repl,
commands); commands);
} else { } else {
sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE, sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE,
...@@ -5549,7 +5549,7 @@ enum sctp_disposition sctp_sf_do_9_2_start_shutdown( ...@@ -5549,7 +5549,7 @@ enum sctp_disposition sctp_sf_do_9_2_start_shutdown(
* in the Cumulative TSN Ack field the last sequential TSN it * in the Cumulative TSN Ack field the last sequential TSN it
* has received from the peer. * has received from the peer.
*/ */
reply = sctp_make_shutdown(asoc, NULL); reply = sctp_make_shutdown(asoc, arg);
if (!reply) if (!reply)
goto nomem; goto nomem;
...@@ -6147,7 +6147,7 @@ enum sctp_disposition sctp_sf_autoclose_timer_expire( ...@@ -6147,7 +6147,7 @@ enum sctp_disposition sctp_sf_autoclose_timer_expire(
disposition = SCTP_DISPOSITION_CONSUME; disposition = SCTP_DISPOSITION_CONSUME;
if (sctp_outq_is_empty(&asoc->outqueue)) { if (sctp_outq_is_empty(&asoc->outqueue)) {
disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type, disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type,
arg, commands); NULL, commands);
} }
return disposition; return disposition;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment