[SCTP]: Switch sctp_add_bind_addr() to net-endian.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index eafdd11..eb3a5e2 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -155,15 +155,15 @@
 	if (!addr)
 		return -ENOMEM;
 
-	memcpy(&addr->a_h, new, sizeof(*new));
+	memcpy(&addr->a, new, sizeof(*new));
 
 	/* Fix up the port if it has not yet been set.
 	 * Both v4 and v6 have the port at the same offset.
 	 */
-	if (!addr->a_h.v4.sin_port)
-		addr->a_h.v4.sin_port = bp->port;
+	if (!addr->a.v4.sin_port)
+		addr->a.v4.sin_port = htons(bp->port);
 
-	flip_to_n(&addr->a, &addr->a_h);
+	flip_to_h(&addr->a_h, &addr->a);
 
 	addr->use_as_src = use_as_src;
 
@@ -264,6 +264,7 @@
 	int retval = 0;
 	int len;
 	struct sctp_af *af;
+	union sctp_addr tmp;
 
 	/* Convert the raw address to standard address format */
 	while (addrs_len) {
@@ -278,7 +279,8 @@
 		}
 
 		af->from_addr_param(&addr, rawaddr, port, 0);
-		retval = sctp_add_bind_addr(bp, &addr, 1, gfp);
+		flip_to_n(&tmp, &addr);
+		retval = sctp_add_bind_addr(bp, &tmp, 1, gfp);
 		if (retval) {
 			/* Can't finish building the list, clean up. */
 			sctp_bind_addr_clean(bp);
@@ -358,6 +360,8 @@
 			      int flags)
 {
 	int error = 0;
+	union sctp_addr tmp;
+	flip_to_n(&tmp, addr);
 
 	if (sctp_is_any(addr)) {
 		error = sctp_copy_local_addr_list(dest, scope, gfp, flags);
@@ -371,7 +375,7 @@
 		    (((AF_INET6 == addr->sa.sa_family) &&
 		      (flags & SCTP_ADDR6_ALLOWED) &&
 		      (flags & SCTP_ADDR6_PEERSUPP))))
-			error = sctp_add_bind_addr(dest, addr, 1, gfp);
+			error = sctp_add_bind_addr(dest, &tmp, 1, gfp);
 	}
 
 	return error;
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index d08bafd..a6bcbf5 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -234,7 +234,7 @@
 			    (((AF_INET6 == addr->a_h.sa.sa_family) &&
 			      (copy_flags & SCTP_ADDR6_ALLOWED) &&
 			      (copy_flags & SCTP_ADDR6_PEERSUPP)))) {
-				error = sctp_add_bind_addr(bp, &addr->a_h, 1,
+				error = sctp_add_bind_addr(bp, &addr->a, 1,
 							   GFP_ATOMIC);
 				if (error)
 					goto end_copy;
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 2c887d3..46cfcca 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1507,7 +1507,9 @@
 
 	/* Also, add the destination address. */
 	if (list_empty(&retval->base.bind_addr.address_list)) {
-		sctp_add_bind_addr(&retval->base.bind_addr, &chunk->dest, 1,
+		union sctp_addr tmp;
+		flip_to_n(&tmp, &chunk->dest);
+		sctp_add_bind_addr(&retval->base.bind_addr, &tmp, 1,
 				   GFP_ATOMIC);
 	}
 
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 3dd7ada..d09589a 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -313,7 +313,6 @@
 	struct sctp_af *af;
 	unsigned short snum;
 	int ret = 0;
-	union sctp_addr tmp;
 
 	/* Common sockaddr verification. */
 	af = sctp_sockaddr_af(sp, addr, len);
@@ -369,8 +368,7 @@
 	sctp_write_lock(&ep->base.addr_lock);
 
 	/* Use GFP_ATOMIC since BHs are disabled.  */
-	flip_to_h(&tmp, addr);
-	ret = sctp_add_bind_addr(bp, &tmp, 1, GFP_ATOMIC);
+	ret = sctp_add_bind_addr(bp, addr, 1, GFP_ATOMIC);
 	sctp_write_unlock(&ep->base.addr_lock);
 	sctp_local_bh_enable();
 
@@ -572,7 +570,6 @@
 			addr = (union sctp_addr *)addr_buf;
 			af = sctp_get_af_specific(addr->v4.sin_family);
 			memcpy(&saveaddr, addr, af->sockaddr_len);
-			saveaddr.v4.sin_port = ntohs(saveaddr.v4.sin_port);
 			retval = sctp_add_bind_addr(bp, &saveaddr, 0,
 						    GFP_ATOMIC);
 			addr_buf += af->sockaddr_len;