aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sctp/associola.c7
-rw-r--r--net/sctp/sm_make_chunk.c2
-rw-r--r--net/sctp/sm_sideeffect.c2
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