Merge branch 'sctp-dupcookie-fixes'
Xin Long says: ==================== sctp: a bunch of fixes for processing dupcookie After introducing transport hashtable and per stream info into sctp, some regressions were caused when processing dupcookie, this patchset is to fix them. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
11d3c949b4
|
@ -1176,7 +1176,9 @@ void sctp_assoc_update(struct sctp_association *asoc,
|
|||
|
||||
asoc->ctsn_ack_point = asoc->next_tsn - 1;
|
||||
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
|
||||
if (!asoc->stream) {
|
||||
|
||||
if (sctp_state(asoc, COOKIE_WAIT)) {
|
||||
sctp_stream_free(asoc->stream);
|
||||
asoc->stream = new->stream;
|
||||
new->stream = NULL;
|
||||
}
|
||||
|
|
|
@ -2454,16 +2454,11 @@ int sctp_process_init(struct sctp_association *asoc, struct sctp_chunk *chunk,
|
|||
* stream sequence number shall be set to 0.
|
||||
*/
|
||||
|
||||
/* Allocate storage for the negotiated streams if it is not a temporary
|
||||
* association.
|
||||
*/
|
||||
if (!asoc->temp) {
|
||||
if (sctp_stream_init(asoc, gfp))
|
||||
goto clean_up;
|
||||
if (sctp_stream_init(asoc, gfp))
|
||||
goto clean_up;
|
||||
|
||||
if (sctp_assoc_set_id(asoc, gfp))
|
||||
goto clean_up;
|
||||
}
|
||||
if (!asoc->temp && sctp_assoc_set_id(asoc, gfp))
|
||||
goto clean_up;
|
||||
|
||||
/* ADDIP Section 4.1 ASCONF Chunk Procedures
|
||||
*
|
||||
|
|
|
@ -2088,6 +2088,9 @@ sctp_disposition_t sctp_sf_do_5_2_4_dupcook(struct net *net,
|
|||
}
|
||||
}
|
||||
|
||||
/* Set temp so that it won't be added into hashtable */
|
||||
new_asoc->temp = 1;
|
||||
|
||||
/* Compare the tie_tag in cookie with the verification tag of
|
||||
* current association.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue