diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/sctp/associola.c | 2 | ||||
-rw-r--r-- | net/sctp/proc.c | 6 | ||||
-rw-r--r-- | net/sctp/sm_sideeffect.c | 4 |
3 files changed, 4 insertions, 8 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 8d841f16dcb..22c2519d3fd 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 04faa4a706d..b3493bdbcac 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 3d9213dfaa1..50d4ccc15ad 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 | } |