diff options
Diffstat (limited to 'net/sctp/associola.c')
-rw-r--r-- | net/sctp/associola.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 422c98aa9d5c..b4cd2b71953f 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -718,12 +718,11 @@ struct sctp_transport *sctp_assoc_lookup_paddr( | |||
718 | const union sctp_addr *address) | 718 | const union sctp_addr *address) |
719 | { | 719 | { |
720 | struct sctp_transport *t; | 720 | struct sctp_transport *t; |
721 | struct list_head *pos; | ||
722 | 721 | ||
723 | /* Cycle through all transports searching for a peer address. */ | 722 | /* Cycle through all transports searching for a peer address. */ |
724 | 723 | ||
725 | list_for_each(pos, &asoc->peer.transport_addr_list) { | 724 | list_for_each_entry(t, &asoc->peer.transport_addr_list, |
726 | t = list_entry(pos, struct sctp_transport, transports); | 725 | transports) { |
727 | if (sctp_cmp_addr_exact(address, &t->ipaddr)) | 726 | if (sctp_cmp_addr_exact(address, &t->ipaddr)) |
728 | return t; | 727 | return t; |
729 | } | 728 | } |
@@ -762,7 +761,6 @@ void sctp_assoc_control_transport(struct sctp_association *asoc, | |||
762 | struct sctp_transport *second; | 761 | struct sctp_transport *second; |
763 | struct sctp_ulpevent *event; | 762 | struct sctp_ulpevent *event; |
764 | struct sockaddr_storage addr; | 763 | struct sockaddr_storage addr; |
765 | struct list_head *pos; | ||
766 | int spc_state = 0; | 764 | int spc_state = 0; |
767 | 765 | ||
768 | /* Record the transition on the transport. */ | 766 | /* Record the transition on the transport. */ |
@@ -814,8 +812,8 @@ void sctp_assoc_control_transport(struct sctp_association *asoc, | |||
814 | */ | 812 | */ |
815 | first = NULL; second = NULL; | 813 | first = NULL; second = NULL; |
816 | 814 | ||
817 | list_for_each(pos, &asoc->peer.transport_addr_list) { | 815 | list_for_each_entry(t, &asoc->peer.transport_addr_list, |
818 | t = list_entry(pos, struct sctp_transport, transports); | 816 | transports) { |
819 | 817 | ||
820 | if ((t->state == SCTP_INACTIVE) || | 818 | if ((t->state == SCTP_INACTIVE) || |
821 | (t->state == SCTP_UNCONFIRMED)) | 819 | (t->state == SCTP_UNCONFIRMED)) |
@@ -932,7 +930,6 @@ struct sctp_transport *sctp_assoc_lookup_tsn(struct sctp_association *asoc, | |||
932 | { | 930 | { |
933 | struct sctp_transport *active; | 931 | struct sctp_transport *active; |
934 | struct sctp_transport *match; | 932 | struct sctp_transport *match; |
935 | struct list_head *entry, *pos; | ||
936 | struct sctp_transport *transport; | 933 | struct sctp_transport *transport; |
937 | struct sctp_chunk *chunk; | 934 | struct sctp_chunk *chunk; |
938 | __be32 key = htonl(tsn); | 935 | __be32 key = htonl(tsn); |
@@ -956,8 +953,8 @@ struct sctp_transport *sctp_assoc_lookup_tsn(struct sctp_association *asoc, | |||
956 | 953 | ||
957 | active = asoc->peer.active_path; | 954 | active = asoc->peer.active_path; |
958 | 955 | ||
959 | list_for_each(entry, &active->transmitted) { | 956 | list_for_each_entry(chunk, &active->transmitted, |
960 | chunk = list_entry(entry, struct sctp_chunk, transmitted_list); | 957 | transmitted_list) { |
961 | 958 | ||
962 | if (key == chunk->subh.data_hdr->tsn) { | 959 | if (key == chunk->subh.data_hdr->tsn) { |
963 | match = active; | 960 | match = active; |
@@ -966,14 +963,13 @@ struct sctp_transport *sctp_assoc_lookup_tsn(struct sctp_association *asoc, | |||
966 | } | 963 | } |
967 | 964 | ||
968 | /* If not found, go search all the other transports. */ | 965 | /* If not found, go search all the other transports. */ |
969 | list_for_each(pos, &asoc->peer.transport_addr_list) { | 966 | list_for_each_entry(transport, &asoc->peer.transport_addr_list, |
970 | transport = list_entry(pos, struct sctp_transport, transports); | 967 | transports) { |
971 | 968 | ||
972 | if (transport == active) | 969 | if (transport == active) |
973 | break; | 970 | break; |
974 | list_for_each(entry, &transport->transmitted) { | 971 | list_for_each_entry(chunk, &transport->transmitted, |
975 | chunk = list_entry(entry, struct sctp_chunk, | 972 | transmitted_list) { |
976 | transmitted_list); | ||
977 | if (key == chunk->subh.data_hdr->tsn) { | 973 | if (key == chunk->subh.data_hdr->tsn) { |
978 | match = transport; | 974 | match = transport; |
979 | goto out; | 975 | goto out; |
@@ -1154,9 +1150,8 @@ void sctp_assoc_update(struct sctp_association *asoc, | |||
1154 | 1150 | ||
1155 | } else { | 1151 | } else { |
1156 | /* Add any peer addresses from the new association. */ | 1152 | /* Add any peer addresses from the new association. */ |
1157 | list_for_each(pos, &new->peer.transport_addr_list) { | 1153 | list_for_each_entry(trans, &new->peer.transport_addr_list, |
1158 | trans = list_entry(pos, struct sctp_transport, | 1154 | transports) { |
1159 | transports); | ||
1160 | if (!sctp_assoc_lookup_paddr(asoc, &trans->ipaddr)) | 1155 | if (!sctp_assoc_lookup_paddr(asoc, &trans->ipaddr)) |
1161 | sctp_assoc_add_peer(asoc, &trans->ipaddr, | 1156 | sctp_assoc_add_peer(asoc, &trans->ipaddr, |
1162 | GFP_ATOMIC, trans->state); | 1157 | GFP_ATOMIC, trans->state); |
@@ -1306,15 +1301,14 @@ struct sctp_transport *sctp_assoc_choose_shutdown_transport( | |||
1306 | void sctp_assoc_sync_pmtu(struct sctp_association *asoc) | 1301 | void sctp_assoc_sync_pmtu(struct sctp_association *asoc) |
1307 | { | 1302 | { |
1308 | struct sctp_transport *t; | 1303 | struct sctp_transport *t; |
1309 | struct list_head *pos; | ||
1310 | __u32 pmtu = 0; | 1304 | __u32 pmtu = 0; |
1311 | 1305 | ||
1312 | if (!asoc) | 1306 | if (!asoc) |
1313 | return; | 1307 | return; |
1314 | 1308 | ||
1315 | /* Get the lowest pmtu of all the transports. */ | 1309 | /* Get the lowest pmtu of all the transports. */ |
1316 | list_for_each(pos, &asoc->peer.transport_addr_list) { | 1310 | list_for_each_entry(t, &asoc->peer.transport_addr_list, |
1317 | t = list_entry(pos, struct sctp_transport, transports); | 1311 | transports) { |
1318 | if (t->pmtu_pending && t->dst) { | 1312 | if (t->pmtu_pending && t->dst) { |
1319 | sctp_transport_update_pmtu(t, dst_mtu(t->dst)); | 1313 | sctp_transport_update_pmtu(t, dst_mtu(t->dst)); |
1320 | t->pmtu_pending = 0; | 1314 | t->pmtu_pending = 0; |