diff options
-rw-r--r-- | net/sctp/endpointola.c | 2 | ||||
-rw-r--r-- | net/sctp/input.c | 5 | ||||
-rw-r--r-- | net/sctp/socket.c | 4 |
3 files changed, 4 insertions, 7 deletions
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c index 5ffb1af336c0..4cca7792c961 100644 --- a/net/sctp/endpointola.c +++ b/net/sctp/endpointola.c | |||
@@ -305,7 +305,7 @@ int sctp_endpoint_is_peeled_off(struct sctp_endpoint *ep, | |||
305 | bp = &ep->base.bind_addr; | 305 | bp = &ep->base.bind_addr; |
306 | list_for_each(pos, &bp->address_list) { | 306 | list_for_each(pos, &bp->address_list) { |
307 | addr = list_entry(pos, struct sctp_sockaddr_entry, list); | 307 | addr = list_entry(pos, struct sctp_sockaddr_entry, list); |
308 | if (sctp_has_association(&addr->a_h, paddr)) { | 308 | if (sctp_has_association(&addr->a, paddr)) { |
309 | sctp_read_unlock(&ep->base.addr_lock); | 309 | sctp_read_unlock(&ep->base.addr_lock); |
310 | return 1; | 310 | return 1; |
311 | } | 311 | } |
diff --git a/net/sctp/input.c b/net/sctp/input.c index 2d660f8d94fd..33111873a488 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c | |||
@@ -872,11 +872,8 @@ int sctp_has_association(const union sctp_addr *laddr, | |||
872 | { | 872 | { |
873 | struct sctp_association *asoc; | 873 | struct sctp_association *asoc; |
874 | struct sctp_transport *transport; | 874 | struct sctp_transport *transport; |
875 | union sctp_addr tmp, tmp2; | ||
876 | flip_to_n(&tmp, laddr); | ||
877 | flip_to_n(&tmp2, paddr); | ||
878 | 875 | ||
879 | if ((asoc = sctp_lookup_association(&tmp, &tmp2, &transport))) { | 876 | if ((asoc = sctp_lookup_association(laddr, paddr, &transport))) { |
880 | sctp_association_put(asoc); | 877 | sctp_association_put(asoc); |
881 | return 1; | 878 | return 1; |
882 | } | 879 | } |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 6beaa7821ca6..e118e3c1285e 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -1018,7 +1018,7 @@ static int __sctp_connect(struct sock* sk, | |||
1018 | * make sure that there is no peeled-off association matching | 1018 | * make sure that there is no peeled-off association matching |
1019 | * the peer address even on another socket. | 1019 | * the peer address even on another socket. |
1020 | */ | 1020 | */ |
1021 | if (sctp_endpoint_is_peeled_off(ep, &to)) { | 1021 | if (sctp_endpoint_is_peeled_off(ep, sa_addr)) { |
1022 | err = -EADDRNOTAVAIL; | 1022 | err = -EADDRNOTAVAIL; |
1023 | goto out_free; | 1023 | goto out_free; |
1024 | } | 1024 | } |
@@ -1475,7 +1475,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
1475 | */ | 1475 | */ |
1476 | if ((sctp_style(sk, TCP) && | 1476 | if ((sctp_style(sk, TCP) && |
1477 | sctp_sstate(sk, ESTABLISHED)) || | 1477 | sctp_sstate(sk, ESTABLISHED)) || |
1478 | sctp_endpoint_is_peeled_off(ep, &to)) { | 1478 | sctp_endpoint_is_peeled_off(ep, &tmp)) { |
1479 | err = -EADDRNOTAVAIL; | 1479 | err = -EADDRNOTAVAIL; |
1480 | goto out_unlock; | 1480 | goto out_unlock; |
1481 | } | 1481 | } |