* [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts @ 2018-09-03 7:47 Xin Long 2018-09-03 7:47 ` [PATCH net 1/2] sctp: fix invalid reference to the index variable of the iterator Xin Long 2018-09-03 22:06 ` [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Marcelo Ricardo Leitner 0 siblings, 2 replies; 5+ messages in thread From: Xin Long @ 2018-09-03 7:47 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman This patchset fixes two problems in sctp_apply_peer_addr_params() when setting spp_ipv6_flowlabel or spp_dscp. Xin Long (2): sctp: fix invalid reference to the index variable of the iterator sctp: not traverse asoc trans list if non-ipv6 trans exists for ipv6_flowlabel net/sctp/socket.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) -- 2.1.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net 1/2] sctp: fix invalid reference to the index variable of the iterator 2018-09-03 7:47 [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Xin Long @ 2018-09-03 7:47 ` Xin Long 2018-09-03 7:47 ` [PATCH net 2/2] sctp: not traverse asoc trans list if non-ipv6 trans exists for ipv6_flowlabel Xin Long 2018-09-03 22:06 ` [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Marcelo Ricardo Leitner 1 sibling, 1 reply; 5+ messages in thread From: Xin Long @ 2018-09-03 7:47 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman Now in sctp_apply_peer_addr_params(), if SPP_IPV6_FLOWLABEL flag is set and trans is NULL, it would use trans as the index variable to traverse transport_addr_list, then trans is set as the last transport of it. Later, if SPP_DSCP flag is set, it would enter into the wrong branch as trans is actually an invalid reference. So fix it by using a new index variable to traverse transport_addr_list for both SPP_DSCP and SPP_IPV6_FLOWLABEL flags process. Fixes: 0b0dce7a36fb ("sctp: add spp_ipv6_flowlabel and spp_dscp for sctp_paddrparams") Reported-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/socket.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index aa76586..a0ccfa4 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2663,14 +2663,15 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, SCTP_FLOWLABEL_VAL_MASK; trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; } else if (asoc) { - list_for_each_entry(trans, - &asoc->peer.transport_addr_list, + struct sctp_transport *t; + + list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) { - if (trans->ipaddr.sa.sa_family != AF_INET6) + if (t->ipaddr.sa.sa_family != AF_INET6) continue; - trans->flowlabel = params->spp_ipv6_flowlabel & - SCTP_FLOWLABEL_VAL_MASK; - trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; + t->flowlabel = params->spp_ipv6_flowlabel & + SCTP_FLOWLABEL_VAL_MASK; + t->flowlabel |= SCTP_FLOWLABEL_SET_MASK; } asoc->flowlabel = params->spp_ipv6_flowlabel & SCTP_FLOWLABEL_VAL_MASK; @@ -2687,12 +2688,13 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, trans->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; trans->dscp |= SCTP_DSCP_SET_MASK; } else if (asoc) { - list_for_each_entry(trans, - &asoc->peer.transport_addr_list, + struct sctp_transport *t; + + list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) { - trans->dscp = params->spp_dscp & - SCTP_DSCP_VAL_MASK; - trans->dscp |= SCTP_DSCP_SET_MASK; + t->dscp = params->spp_dscp & + SCTP_DSCP_VAL_MASK; + t->dscp |= SCTP_DSCP_SET_MASK; } asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; asoc->dscp |= SCTP_DSCP_SET_MASK; -- 2.1.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net 2/2] sctp: not traverse asoc trans list if non-ipv6 trans exists for ipv6_flowlabel 2018-09-03 7:47 ` [PATCH net 1/2] sctp: fix invalid reference to the index variable of the iterator Xin Long @ 2018-09-03 7:47 ` Xin Long 0 siblings, 0 replies; 5+ messages in thread From: Xin Long @ 2018-09-03 7:47 UTC (permalink / raw) To: network dev, linux-sctp; +Cc: davem, Marcelo Ricardo Leitner, Neil Horman When users set params.spp_address and get a trans, ipv6_flowlabel flag should be applied into this trans. But even if this one is not an ipv6 trans, it should not go to apply it into all other transes of the asoc but simply ignore it. Fixes: 0b0dce7a36fb ("sctp: add spp_ipv6_flowlabel and spp_dscp for sctp_paddrparams") Signed-off-by: Xin Long <lucien.xin@gmail.com> --- net/sctp/socket.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index a0ccfa4..f73e9d3 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2658,10 +2658,12 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, } if (params->spp_flags & SPP_IPV6_FLOWLABEL) { - if (trans && trans->ipaddr.sa.sa_family == AF_INET6) { - trans->flowlabel = params->spp_ipv6_flowlabel & - SCTP_FLOWLABEL_VAL_MASK; - trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; + if (trans) { + if (trans->ipaddr.sa.sa_family == AF_INET6) { + trans->flowlabel = params->spp_ipv6_flowlabel & + SCTP_FLOWLABEL_VAL_MASK; + trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; + } } else if (asoc) { struct sctp_transport *t; -- 2.1.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts 2018-09-03 7:47 [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Xin Long 2018-09-03 7:47 ` [PATCH net 1/2] sctp: fix invalid reference to the index variable of the iterator Xin Long @ 2018-09-03 22:06 ` Marcelo Ricardo Leitner 2018-09-04 4:58 ` David Miller 1 sibling, 1 reply; 5+ messages in thread From: Marcelo Ricardo Leitner @ 2018-09-03 22:06 UTC (permalink / raw) To: Xin Long; +Cc: network dev, linux-sctp, davem, Neil Horman On Mon, Sep 03, 2018 at 03:47:09PM +0800, Xin Long wrote: > This patchset fixes two problems in sctp_apply_peer_addr_params() > when setting spp_ipv6_flowlabel or spp_dscp. > > Xin Long (2): > sctp: fix invalid reference to the index variable of the iterator > sctp: not traverse asoc trans list if non-ipv6 trans exists for > ipv6_flowlabel > > net/sctp/socket.c | 34 +++++++++++++++++++--------------- > 1 file changed, 19 insertions(+), 15 deletions(-) Series Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts 2018-09-03 22:06 ` [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Marcelo Ricardo Leitner @ 2018-09-04 4:58 ` David Miller 0 siblings, 0 replies; 5+ messages in thread From: David Miller @ 2018-09-04 4:58 UTC (permalink / raw) To: marcelo.leitner; +Cc: lucien.xin, netdev, linux-sctp, nhorman From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Date: Mon, 3 Sep 2018 19:06:06 -0300 > On Mon, Sep 03, 2018 at 03:47:09PM +0800, Xin Long wrote: >> This patchset fixes two problems in sctp_apply_peer_addr_params() >> when setting spp_ipv6_flowlabel or spp_dscp. >> >> Xin Long (2): >> sctp: fix invalid reference to the index variable of the iterator >> sctp: not traverse asoc trans list if non-ipv6 trans exists for >> ipv6_flowlabel >> >> net/sctp/socket.c | 34 +++++++++++++++++++--------------- >> 1 file changed, 19 insertions(+), 15 deletions(-) > > Series > Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Series applied. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-09-04 9:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-09-03 7:47 [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Xin Long 2018-09-03 7:47 ` [PATCH net 1/2] sctp: fix invalid reference to the index variable of the iterator Xin Long 2018-09-03 7:47 ` [PATCH net 2/2] sctp: not traverse asoc trans list if non-ipv6 trans exists for ipv6_flowlabel Xin Long 2018-09-03 22:06 ` [PATCH net 0/2] sctp: two fixes for spp_ipv6_flowlabel and spp_dscp sockopts Marcelo Ricardo Leitner 2018-09-04 4:58 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).