diff options
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 12 |
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); |