diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 72199d149573cd6570181d74c869d652b207f416..8d841f16dcbd2ad899551be93f147eee42ed5301 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -930,6 +930,8 @@ struct sctp_transport *sctp_assoc_is_match(struct sctp_association *asoc,
 					   const union sctp_addr *paddr)
 {
 	struct sctp_transport *transport;
+	union sctp_addr tmp;
+	flip_to_n(&tmp, laddr);
 
 	sctp_read_lock(&asoc->base.addr_lock);
 
@@ -939,7 +941,7 @@ struct sctp_transport *sctp_assoc_is_match(struct sctp_association *asoc,
 		if (!transport)
 			goto out;
 
-		if (sctp_bind_addr_match(&asoc->base.bind_addr, laddr,
+		if (sctp_bind_addr_match(&asoc->base.bind_addr, &tmp,
 					 sctp_sk(asoc->base.sk)))
 			goto out;
 	}
@@ -1342,12 +1344,10 @@ int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
 			    const union sctp_addr *laddr)
 {
 	int found;
-	union sctp_addr tmp;
 
-	flip_to_h(&tmp, laddr);
 	sctp_read_lock(&asoc->base.addr_lock);
 	if ((asoc->base.bind_addr.port == ntohs(laddr->v4.sin_port)) &&
-	    sctp_bind_addr_match(&asoc->base.bind_addr, &tmp,
+	    sctp_bind_addr_match(&asoc->base.bind_addr, laddr,
 			         sctp_sk(asoc->base.sk))) {
 		found = 1;
 		goto out;
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index 9085e531d575c275b0a63a8b5554bad4e36a3b2a..442d891f68ea3c505e637cf03d7071b73e0a16bb 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -307,12 +307,10 @@ int sctp_bind_addr_match(struct sctp_bind_addr *bp,
 {
 	struct sctp_sockaddr_entry *laddr;
 	struct list_head *pos;
-	union sctp_addr tmp;
 
-	flip_to_n(&tmp, addr);
 	list_for_each(pos, &bp->address_list) {
 		laddr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (opt->pf->cmp_addr(&laddr->a, &tmp, opt))
+		if (opt->pf->cmp_addr(&laddr->a, addr, opt))
  			return 1;
 	}
 
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c
index 75904b037ec6c6a4e3e980bab0a031a0334b59a3..d77fe9232dd1c0ec383a71a7a054a9c6d3cafada 100644
--- a/net/sctp/endpointola.c
+++ b/net/sctp/endpointola.c
@@ -228,10 +228,12 @@ struct sctp_endpoint *sctp_endpoint_is_match(struct sctp_endpoint *ep,
 					       const union sctp_addr *laddr)
 {
 	struct sctp_endpoint *retval;
+	union sctp_addr tmp;
+	flip_to_n(&tmp, laddr);
 
 	sctp_read_lock(&ep->base.addr_lock);
 	if (ep->base.bind_addr.port == laddr->v4.sin_port) {
-		if (sctp_bind_addr_match(&ep->base.bind_addr, laddr,
+		if (sctp_bind_addr_match(&ep->base.bind_addr, &tmp,
 					 sctp_sk(ep->base.sk))) {
 			retval = ep;
 			goto out;
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index e03ba9055eb1986ddb813cd9ceb20d08d24e1f80..d42953efa3557e8d31f64e939c8d3c7b85fc79f6 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -4635,11 +4635,9 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
 {
 	struct sctp_bind_hashbucket *head; /* hash list */
 	struct sctp_bind_bucket *pp; /* hash list port iterator */
-	union sctp_addr tmp;
 	unsigned short snum;
 	int ret;
 
-	flip_to_h(&tmp, addr);
 	snum = ntohs(addr->v4.sin_port);
 
 	SCTP_DEBUG_PRINTK("sctp_get_port() begins, snum=%d\n", snum);
@@ -4737,7 +4735,7 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
 			if (reuse && sk2->sk_reuse)
 				continue;
 
-			if (sctp_bind_addr_match(&ep2->base.bind_addr, &tmp,
+			if (sctp_bind_addr_match(&ep2->base.bind_addr, addr,
 						 sctp_sk(sk))) {
 				ret = (long)sk2;
 				goto fail_unlock;