aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sctp/associola.c2
-rw-r--r--net/sctp/proc.c6
-rw-r--r--net/sctp/sm_sideeffect.c4
3 files changed, 4 insertions, 8 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 8d841f16dcbd..22c2519d3fd8 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -442,7 +442,7 @@ void sctp_assoc_set_primary(struct sctp_association *asoc,
442 asoc->peer.primary_path = transport; 442 asoc->peer.primary_path = transport;
443 443
444 /* Set a default msg_name for events. */ 444 /* Set a default msg_name for events. */
445 memcpy(&asoc->peer.primary_addr, &transport->ipaddr_h, 445 memcpy(&asoc->peer.primary_addr, &transport->ipaddr,
446 sizeof(union sctp_addr)); 446 sizeof(union sctp_addr));
447 447
448 /* If the primary path is changing, assume that the 448 /* If the primary path is changing, assume that the
diff --git a/net/sctp/proc.c b/net/sctp/proc.c
index 04faa4a706d4..b3493bdbcacb 100644
--- a/net/sctp/proc.c
+++ b/net/sctp/proc.c
@@ -175,16 +175,14 @@ static void sctp_seq_dump_remote_addrs(struct seq_file *seq, struct sctp_associa
175 struct list_head *pos; 175 struct list_head *pos;
176 struct sctp_transport *transport; 176 struct sctp_transport *transport;
177 union sctp_addr *addr, *primary; 177 union sctp_addr *addr, *primary;
178 union sctp_addr tmp;
179 struct sctp_af *af; 178 struct sctp_af *af;
180 179
181 primary = &(assoc->peer.primary_addr); 180 primary = &assoc->peer.primary_addr;
182 flip_to_n(&tmp, primary);
183 list_for_each(pos, &assoc->peer.transport_addr_list) { 181 list_for_each(pos, &assoc->peer.transport_addr_list) {
184 transport = list_entry(pos, struct sctp_transport, transports); 182 transport = list_entry(pos, struct sctp_transport, transports);
185 addr = &transport->ipaddr; 183 addr = &transport->ipaddr;
186 af = sctp_get_af_specific(addr->sa.sa_family); 184 af = sctp_get_af_specific(addr->sa.sa_family);
187 if (af->cmp_addr(addr, &tmp)) { 185 if (af->cmp_addr(addr, primary)) {
188 seq_printf(seq, "*"); 186 seq_printf(seq, "*");
189 } 187 }
190 af->seq_dump_addr(seq, addr); 188 af->seq_dump_addr(seq, addr);
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 3d9213dfaa10..50d4ccc15ad1 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -830,13 +830,11 @@ static void sctp_cmd_del_non_primary(struct sctp_association *asoc)
830 struct sctp_transport *t; 830 struct sctp_transport *t;
831 struct list_head *pos; 831 struct list_head *pos;
832 struct list_head *temp; 832 struct list_head *temp;
833 union sctp_addr tmp;
834 flip_to_n(&tmp, &asoc->peer.primary_addr);
835 833
836 list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { 834 list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
837 t = list_entry(pos, struct sctp_transport, transports); 835 t = list_entry(pos, struct sctp_transport, transports);
838 if (!sctp_cmp_addr_exact(&t->ipaddr, 836 if (!sctp_cmp_addr_exact(&t->ipaddr,
839 &tmp)) { 837 &asoc->peer.primary_addr)) {
840 sctp_assoc_del_peer(asoc, &t->ipaddr_h); 838 sctp_assoc_del_peer(asoc, &t->ipaddr_h);
841 } 839 }
842 } 840 }