* [PATCH net 0/2] sctp: a bunch of fixes for processing dupcookie @ 2017-05-23 5:28 ` Xin Long 0 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman After introducing transport hashtable and per stream info into sctp, some regressions were caused when processing dupcookie, this patchset is to fix them. Xin Long (2): sctp: fix stream update when processing dupcookie sctp: set new_asoc temp when processing dupcookie net/sctp/associola.c | 4 +++- net/sctp/sm_make_chunk.c | 13 ++++--------- net/sctp/sm_statefuns.c | 3 +++ 3 files changed, 10 insertions(+), 10 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH net 0/2] sctp: a bunch of fixes for processing dupcookie @ 2017-05-23 5:28 ` Xin Long 0 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman After introducing transport hashtable and per stream info into sctp, some regressions were caused when processing dupcookie, this patchset is to fix them. Xin Long (2): sctp: fix stream update when processing dupcookie sctp: set new_asoc temp when processing dupcookie net/sctp/associola.c | 4 +++- net/sctp/sm_make_chunk.c | 13 ++++--------- net/sctp/sm_statefuns.c | 3 +++ 3 files changed, 10 insertions(+), 10 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH net 1/2] sctp: fix stream update when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 5:28 ` Xin Long -1 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing asoc"), stream and stream.out info are always alloced when creating an asoc. So it's not correct to check !asoc->stream before updating stream info when processing dupcookie, but would be better to check asoc state instead. Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/associola.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/sctp/associola.c b/net/sctp/associola.c index a9708da..9523828 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -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; } -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net 1/2] sctp: fix stream update when processing dupcookie @ 2017-05-23 5:28 ` Xin Long 0 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing asoc"), stream and stream.out info are always alloced when creating an asoc. So it's not correct to check !asoc->stream before updating stream info when processing dupcookie, but would be better to check asoc state instead. Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/associola.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/sctp/associola.c b/net/sctp/associola.c index a9708da..9523828 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -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; } -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 5:28 ` Xin Long -1 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman After sctp changed to use transport hashtable, a transport would be added into global hashtable when adding the peer to an asoc, then the asoc can be got by searching the transport in the hashtbale. The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, a new asoc would be created. A peer with the same addr and port as the one in the old asoc might be added into the new asoc, but fail to be added into the hashtable, as they also belong to the same sk. It causes that sctp's dupcookie processing can not really work. Since the new asoc will be freed after copying it's information to the old asoc, it's more like a temp asoc. So this patch is to fix it by setting it as a temp asoc to avoid adding it's any transport into the hashtable and also avoid allocing assoc_id. An extra thing it has to do is to also alloc stream info for any temp asoc, as sctp dupcookie process needs it to update old asoc. But I don't think it would hurt something, as a temp asoc would always be freed after finishing processing cookie echo packet. Reported-by: Jianwen Ji <jiji@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/sm_make_chunk.c | 13 ++++--------- net/sctp/sm_statefuns.c | 3 +++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 8a08f13..92e332e 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -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 * diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 4f5e6cf..f863b55 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c @@ -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. */ -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie @ 2017-05-23 5:28 ` Xin Long 0 siblings, 0 replies; 16+ messages in thread From: Xin Long @ 2017-05-23 5:28 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman After sctp changed to use transport hashtable, a transport would be added into global hashtable when adding the peer to an asoc, then the asoc can be got by searching the transport in the hashtbale. The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, a new asoc would be created. A peer with the same addr and port as the one in the old asoc might be added into the new asoc, but fail to be added into the hashtable, as they also belong to the same sk. It causes that sctp's dupcookie processing can not really work. Since the new asoc will be freed after copying it's information to the old asoc, it's more like a temp asoc. So this patch is to fix it by setting it as a temp asoc to avoid adding it's any transport into the hashtable and also avoid allocing assoc_id. An extra thing it has to do is to also alloc stream info for any temp asoc, as sctp dupcookie process needs it to update old asoc. But I don't think it would hurt something, as a temp asoc would always be freed after finishing processing cookie echo packet. Reported-by: Jianwen Ji <jiji@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/sm_make_chunk.c | 13 ++++--------- net/sctp/sm_statefuns.c | 3 +++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 8a08f13..92e332e 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -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 * diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 4f5e6cf..f863b55 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c @@ -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. */ -- 2.1.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 11:26 ` Neil Horman -1 siblings, 0 replies; 16+ messages in thread From: Neil Horman @ 2017-05-23 11:26 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Marcelo Ricardo Leitner On Tue, May 23, 2017 at 01:28:55PM +0800, Xin Long wrote: > After sctp changed to use transport hashtable, a transport would be > added into global hashtable when adding the peer to an asoc, then > the asoc can be got by searching the transport in the hashtbale. > > The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, > a new asoc would be created. A peer with the same addr and port as > the one in the old asoc might be added into the new asoc, but fail > to be added into the hashtable, as they also belong to the same sk. > > It causes that sctp's dupcookie processing can not really work. > > Since the new asoc will be freed after copying it's information to > the old asoc, it's more like a temp asoc. So this patch is to fix > it by setting it as a temp asoc to avoid adding it's any transport > into the hashtable and also avoid allocing assoc_id. > > An extra thing it has to do is to also alloc stream info for any > temp asoc, as sctp dupcookie process needs it to update old asoc. > But I don't think it would hurt something, as a temp asoc would > always be freed after finishing processing cookie echo packet. > > Reported-by: Jianwen Ji <jiji@redhat.com> > Signed-off-by: Xin Long <lucien.xin@gmail.com> > --- > net/sctp/sm_make_chunk.c | 13 ++++--------- > net/sctp/sm_statefuns.c | 3 +++ > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c > index 8a08f13..92e332e 100644 > --- a/net/sctp/sm_make_chunk.c > +++ b/net/sctp/sm_make_chunk.c > @@ -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 > * > diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c > index 4f5e6cf..f863b55 100644 > --- a/net/sctp/sm_statefuns.c > +++ b/net/sctp/sm_statefuns.c > @@ -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. > */ > -- > 2.1.0 > > Acked-by: Neil Horman <nhorman@tuxdriver.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie @ 2017-05-23 11:26 ` Neil Horman 0 siblings, 0 replies; 16+ messages in thread From: Neil Horman @ 2017-05-23 11:26 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Marcelo Ricardo Leitner On Tue, May 23, 2017 at 01:28:55PM +0800, Xin Long wrote: > After sctp changed to use transport hashtable, a transport would be > added into global hashtable when adding the peer to an asoc, then > the asoc can be got by searching the transport in the hashtbale. > > The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, > a new asoc would be created. A peer with the same addr and port as > the one in the old asoc might be added into the new asoc, but fail > to be added into the hashtable, as they also belong to the same sk. > > It causes that sctp's dupcookie processing can not really work. > > Since the new asoc will be freed after copying it's information to > the old asoc, it's more like a temp asoc. So this patch is to fix > it by setting it as a temp asoc to avoid adding it's any transport > into the hashtable and also avoid allocing assoc_id. > > An extra thing it has to do is to also alloc stream info for any > temp asoc, as sctp dupcookie process needs it to update old asoc. > But I don't think it would hurt something, as a temp asoc would > always be freed after finishing processing cookie echo packet. > > Reported-by: Jianwen Ji <jiji@redhat.com> > Signed-off-by: Xin Long <lucien.xin@gmail.com> > --- > net/sctp/sm_make_chunk.c | 13 ++++--------- > net/sctp/sm_statefuns.c | 3 +++ > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c > index 8a08f13..92e332e 100644 > --- a/net/sctp/sm_make_chunk.c > +++ b/net/sctp/sm_make_chunk.c > @@ -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 > * > diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c > index 4f5e6cf..f863b55 100644 > --- a/net/sctp/sm_statefuns.c > +++ b/net/sctp/sm_statefuns.c > @@ -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. > */ > -- > 2.1.0 > > Acked-by: Neil Horman <nhorman@tuxdriver.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 16:27 ` Vlad Yasevich -1 siblings, 0 replies; 16+ messages in thread From: Vlad Yasevich @ 2017-05-23 16:27 UTC (permalink / raw) To: Xin Long, network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Neil Horman On 05/23/2017 01:28 AM, Xin Long wrote: > After sctp changed to use transport hashtable, a transport would be > added into global hashtable when adding the peer to an asoc, then > the asoc can be got by searching the transport in the hashtbale. > > The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, > a new asoc would be created. A peer with the same addr and port as > the one in the old asoc might be added into the new asoc, but fail > to be added into the hashtable, as they also belong to the same sk. > > It causes that sctp's dupcookie processing can not really work. > > Since the new asoc will be freed after copying it's information to > the old asoc, it's more like a temp asoc. So this patch is to fix > it by setting it as a temp asoc to avoid adding it's any transport > into the hashtable and also avoid allocing assoc_id. > > An extra thing it has to do is to also alloc stream info for any > temp asoc, as sctp dupcookie process needs it to update old asoc. > But I don't think it would hurt something, as a temp asoc would > always be freed after finishing processing cookie echo packet. > > Reported-by: Jianwen Ji <jiji@redhat.com> > Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> -vlad > --- > net/sctp/sm_make_chunk.c | 13 ++++--------- > net/sctp/sm_statefuns.c | 3 +++ > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c > index 8a08f13..92e332e 100644 > --- a/net/sctp/sm_make_chunk.c > +++ b/net/sctp/sm_make_chunk.c > @@ -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 > * > diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c > index 4f5e6cf..f863b55 100644 > --- a/net/sctp/sm_statefuns.c > +++ b/net/sctp/sm_statefuns.c > @@ -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. > */ > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 2/2] sctp: set new_asoc temp when processing dupcookie @ 2017-05-23 16:27 ` Vlad Yasevich 0 siblings, 0 replies; 16+ messages in thread From: Vlad Yasevich @ 2017-05-23 16:27 UTC (permalink / raw) To: Xin Long, network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Neil Horman On 05/23/2017 01:28 AM, Xin Long wrote: > After sctp changed to use transport hashtable, a transport would be > added into global hashtable when adding the peer to an asoc, then > the asoc can be got by searching the transport in the hashtbale. > > The problem is when processing dupcookie in sctp_sf_do_5_2_4_dupcook, > a new asoc would be created. A peer with the same addr and port as > the one in the old asoc might be added into the new asoc, but fail > to be added into the hashtable, as they also belong to the same sk. > > It causes that sctp's dupcookie processing can not really work. > > Since the new asoc will be freed after copying it's information to > the old asoc, it's more like a temp asoc. So this patch is to fix > it by setting it as a temp asoc to avoid adding it's any transport > into the hashtable and also avoid allocing assoc_id. > > An extra thing it has to do is to also alloc stream info for any > temp asoc, as sctp dupcookie process needs it to update old asoc. > But I don't think it would hurt something, as a temp asoc would > always be freed after finishing processing cookie echo packet. > > Reported-by: Jianwen Ji <jiji@redhat.com> > Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> -vlad > --- > net/sctp/sm_make_chunk.c | 13 ++++--------- > net/sctp/sm_statefuns.c | 3 +++ > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c > index 8a08f13..92e332e 100644 > --- a/net/sctp/sm_make_chunk.c > +++ b/net/sctp/sm_make_chunk.c > @@ -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 > * > diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c > index 4f5e6cf..f863b55 100644 > --- a/net/sctp/sm_statefuns.c > +++ b/net/sctp/sm_statefuns.c > @@ -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. > */ > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 1/2] sctp: fix stream update when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 11:26 ` Neil Horman -1 siblings, 0 replies; 16+ messages in thread From: Neil Horman @ 2017-05-23 11:26 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Marcelo Ricardo Leitner On Tue, May 23, 2017 at 01:28:54PM +0800, Xin Long wrote: > Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing > asoc"), stream and stream.out info are always alloced when creating > an asoc. > > So it's not correct to check !asoc->stream before updating stream > info when processing dupcookie, but would be better to check asoc > state instead. > > Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") > Signed-off-by: Xin Long <lucien.xin@gmail.com> > --- > net/sctp/associola.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index a9708da..9523828 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -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; > } > -- > 2.1.0 > > Acked-by: Neil Horman <nhorman@tuxdriver.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 1/2] sctp: fix stream update when processing dupcookie @ 2017-05-23 11:26 ` Neil Horman 0 siblings, 0 replies; 16+ messages in thread From: Neil Horman @ 2017-05-23 11:26 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Marcelo Ricardo Leitner On Tue, May 23, 2017 at 01:28:54PM +0800, Xin Long wrote: > Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing > asoc"), stream and stream.out info are always alloced when creating > an asoc. > > So it's not correct to check !asoc->stream before updating stream > info when processing dupcookie, but would be better to check asoc > state instead. > > Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") > Signed-off-by: Xin Long <lucien.xin@gmail.com> > --- > net/sctp/associola.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index a9708da..9523828 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -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; > } > -- > 2.1.0 > > Acked-by: Neil Horman <nhorman@tuxdriver.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 1/2] sctp: fix stream update when processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-23 16:26 ` Vlad Yasevich -1 siblings, 0 replies; 16+ messages in thread From: Vlad Yasevich @ 2017-05-23 16:26 UTC (permalink / raw) To: Xin Long, network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Neil Horman On 05/23/2017 01:28 AM, Xin Long wrote: > Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing > asoc"), stream and stream.out info are always alloced when creating > an asoc. > > So it's not correct to check !asoc->stream before updating stream > info when processing dupcookie, but would be better to check asoc > state instead. > > Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") > Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> -vlad > --- > net/sctp/associola.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index a9708da..9523828 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -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; > } > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 1/2] sctp: fix stream update when processing dupcookie @ 2017-05-23 16:26 ` Vlad Yasevich 0 siblings, 0 replies; 16+ messages in thread From: Vlad Yasevich @ 2017-05-23 16:26 UTC (permalink / raw) To: Xin Long, network dev, linux-sctp Cc: davem, Marcelo Ricardo Leitner, Neil Horman On 05/23/2017 01:28 AM, Xin Long wrote: > Since commit 3dbcc105d556 ("sctp: alloc stream info when initializing > asoc"), stream and stream.out info are always alloced when creating > an asoc. > > So it's not correct to check !asoc->stream before updating stream > info when processing dupcookie, but would be better to check asoc > state instead. > > Fixes: 3dbcc105d556 ("sctp: alloc stream info when initializing asoc") > Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> -vlad > --- > net/sctp/associola.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index a9708da..9523828 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -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; > } > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 0/2] sctp: a bunch of fixes for processing dupcookie 2017-05-23 5:28 ` Xin Long @ 2017-05-24 19:22 ` David Miller -1 siblings, 0 replies; 16+ messages in thread From: David Miller @ 2017-05-24 19:22 UTC (permalink / raw) To: lucien.xin; +Cc: netdev, linux-sctp, marcelo.leitner, nhorman From: Xin Long <lucien.xin@gmail.com> Date: Tue, 23 May 2017 13:28:53 +0800 > After introducing transport hashtable and per stream info into sctp, > some regressions were caused when processing dupcookie, this patchset > is to fix them. Series applied, thanks. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH net 0/2] sctp: a bunch of fixes for processing dupcookie @ 2017-05-24 19:22 ` David Miller 0 siblings, 0 replies; 16+ messages in thread From: David Miller @ 2017-05-24 19:22 UTC (permalink / raw) To: lucien.xin; +Cc: netdev, linux-sctp, marcelo.leitner, nhorman From: Xin Long <lucien.xin@gmail.com> Date: Tue, 23 May 2017 13:28:53 +0800 > After introducing transport hashtable and per stream info into sctp, > some regressions were caused when processing dupcookie, this patchset > is to fix them. Series applied, thanks. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2017-05-24 19:23 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-05-23 5:28 [PATCH net 0/2] sctp: a bunch of fixes for processing dupcookie Xin Long 2017-05-23 5:28 ` Xin Long 2017-05-23 5:28 ` [PATCH net 1/2] sctp: fix stream update when " Xin Long 2017-05-23 5:28 ` Xin Long 2017-05-23 5:28 ` [PATCH net 2/2] sctp: set new_asoc temp " Xin Long 2017-05-23 5:28 ` Xin Long 2017-05-23 11:26 ` Neil Horman 2017-05-23 11:26 ` Neil Horman 2017-05-23 16:27 ` Vlad Yasevich 2017-05-23 16:27 ` Vlad Yasevich 2017-05-23 11:26 ` [PATCH net 1/2] sctp: fix stream update " Neil Horman 2017-05-23 11:26 ` Neil Horman 2017-05-23 16:26 ` Vlad Yasevich 2017-05-23 16:26 ` Vlad Yasevich 2017-05-24 19:22 ` [PATCH net 0/2] sctp: a bunch of fixes for " David Miller 2017-05-24 19:22 ` David Miller
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.