diff options
-rw-r--r-- | net/sctp/associola.c | 7 | ||||
-rw-r--r-- | net/sctp/sm_make_chunk.c | 2 | ||||
-rw-r--r-- | net/sctp/sm_sideeffect.c | 2 |
3 files changed, 4 insertions, 7 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 22c2519d3fd8..ab3141f05921 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -666,13 +666,10 @@ void sctp_assoc_del_peer(struct sctp_association *asoc, | |||
666 | struct list_head *pos; | 666 | struct list_head *pos; |
667 | struct list_head *temp; | 667 | struct list_head *temp; |
668 | struct sctp_transport *transport; | 668 | struct sctp_transport *transport; |
669 | union sctp_addr tmp; | ||
670 | |||
671 | flip_to_n(&tmp, addr); | ||
672 | 669 | ||
673 | list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { | 670 | list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { |
674 | transport = list_entry(pos, struct sctp_transport, transports); | 671 | transport = list_entry(pos, struct sctp_transport, transports); |
675 | if (sctp_cmp_addr_exact(&tmp, &transport->ipaddr)) { | 672 | if (sctp_cmp_addr_exact(addr, &transport->ipaddr)) { |
676 | /* Do book keeping for removing the peer and free it. */ | 673 | /* Do book keeping for removing the peer and free it. */ |
677 | sctp_assoc_rm_peer(asoc, transport); | 674 | sctp_assoc_rm_peer(asoc, transport); |
678 | break; | 675 | break; |
@@ -1051,7 +1048,7 @@ void sctp_assoc_update(struct sctp_association *asoc, | |||
1051 | list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { | 1048 | list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { |
1052 | trans = list_entry(pos, struct sctp_transport, transports); | 1049 | trans = list_entry(pos, struct sctp_transport, transports); |
1053 | if (!sctp_assoc_lookup_paddr(new, &trans->ipaddr_h)) | 1050 | if (!sctp_assoc_lookup_paddr(new, &trans->ipaddr_h)) |
1054 | sctp_assoc_del_peer(asoc, &trans->ipaddr_h); | 1051 | sctp_assoc_del_peer(asoc, &trans->ipaddr); |
1055 | } | 1052 | } |
1056 | 1053 | ||
1057 | /* If the case is A (association restart), use | 1054 | /* If the case is A (association restart), use |
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index ee907ea7eed1..303830b40ab3 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -2463,7 +2463,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, | |||
2463 | if (sctp_cmp_addr_exact(&tmp, &tmp_addr)) | 2463 | if (sctp_cmp_addr_exact(&tmp, &tmp_addr)) |
2464 | return SCTP_ERROR_DEL_SRC_IP; | 2464 | return SCTP_ERROR_DEL_SRC_IP; |
2465 | 2465 | ||
2466 | sctp_assoc_del_peer(asoc, &addr); | 2466 | sctp_assoc_del_peer(asoc, &tmp_addr); |
2467 | break; | 2467 | break; |
2468 | case SCTP_PARAM_SET_PRIMARY: | 2468 | case SCTP_PARAM_SET_PRIMARY: |
2469 | peer = sctp_assoc_lookup_paddr(asoc, &addr); | 2469 | peer = sctp_assoc_lookup_paddr(asoc, &addr); |
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 50d4ccc15ad1..a11bd4ff9303 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
@@ -835,7 +835,7 @@ static void sctp_cmd_del_non_primary(struct sctp_association *asoc) | |||
835 | t = list_entry(pos, struct sctp_transport, transports); | 835 | t = list_entry(pos, struct sctp_transport, transports); |
836 | if (!sctp_cmp_addr_exact(&t->ipaddr, | 836 | if (!sctp_cmp_addr_exact(&t->ipaddr, |
837 | &asoc->peer.primary_addr)) { | 837 | &asoc->peer.primary_addr)) { |
838 | sctp_assoc_del_peer(asoc, &t->ipaddr_h); | 838 | sctp_assoc_del_peer(asoc, &t->ipaddr); |
839 | } | 839 | } |
840 | } | 840 | } |
841 | 841 | ||