aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/sm_make_chunk.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r--net/sctp/sm_make_chunk.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index b367ad59ed4a..44ddec90995e 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1041,10 +1041,10 @@ const union sctp_addr *sctp_source(const struct sctp_chunk *chunk)
1041{ 1041{
1042 /* If we have a known transport, use that. */ 1042 /* If we have a known transport, use that. */
1043 if (chunk->transport) { 1043 if (chunk->transport) {
1044 return &chunk->transport->ipaddr_h; 1044 return &chunk->transport->ipaddr;
1045 } else { 1045 } else {
1046 /* Otherwise, extract it from the IP header. */ 1046 /* Otherwise, extract it from the IP header. */
1047 return &chunk->source_h; 1047 return &chunk->source;
1048 } 1048 }
1049} 1049}
1050 1050
@@ -1844,7 +1844,6 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,
1844 struct sctp_transport *transport; 1844 struct sctp_transport *transport;
1845 struct list_head *pos, *temp; 1845 struct list_head *pos, *temp;
1846 char *cookie; 1846 char *cookie;
1847 union sctp_addr tmp;
1848 1847
1849 /* We must include the address that the INIT packet came from. 1848 /* We must include the address that the INIT packet came from.
1850 * This is the only address that matters for an INIT packet. 1849 * This is the only address that matters for an INIT packet.
@@ -1857,8 +1856,7 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,
1857 * be a a better choice than any of the embedded addresses. 1856 * be a a better choice than any of the embedded addresses.
1858 */ 1857 */
1859 if (peer_addr) { 1858 if (peer_addr) {
1860 flip_to_n(&tmp, peer_addr); 1859 if(!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE))
1861 if(!sctp_assoc_add_peer(asoc, &tmp, gfp, SCTP_ACTIVE))
1862 goto nomem; 1860 goto nomem;
1863 } 1861 }
1864 1862
@@ -2419,7 +2417,6 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
2419 union sctp_addr addr; 2417 union sctp_addr addr;
2420 struct list_head *pos; 2418 struct list_head *pos;
2421 union sctp_addr_param *addr_param; 2419 union sctp_addr_param *addr_param;
2422 union sctp_addr tmp;
2423 2420
2424 addr_param = (union sctp_addr_param *) 2421 addr_param = (union sctp_addr_param *)
2425 ((void *)asconf_param + sizeof(sctp_addip_param_t)); 2422 ((void *)asconf_param + sizeof(sctp_addip_param_t));
@@ -2463,8 +2460,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
2463 * an Error Cause TLV set to the new error code 'Request to 2460 * an Error Cause TLV set to the new error code 'Request to
2464 * Delete Source IP Address' 2461 * Delete Source IP Address'
2465 */ 2462 */
2466 flip_to_n(&tmp, sctp_source(asconf)); 2463 if (sctp_cmp_addr_exact(sctp_source(asconf), &addr))
2467 if (sctp_cmp_addr_exact(&tmp, &addr))
2468 return SCTP_ERROR_DEL_SRC_IP; 2464 return SCTP_ERROR_DEL_SRC_IP;
2469 2465
2470 sctp_assoc_del_peer(asoc, &addr); 2466 sctp_assoc_del_peer(asoc, &addr);