Преглед изворни кода

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

Callers adjusted.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Al Viro пре 18 година
родитељ
комит
7e1e4a2b9d
4 измењених фајлова са 9 додато и 11 уклоњено
  1. 4 4
      net/sctp/associola.c
  2. 1 3
      net/sctp/bind_addr.c
  3. 3 1
      net/sctp/endpointola.c
  4. 1 3
      net/sctp/socket.c

+ 4 - 4
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;

+ 1 - 3
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;
 	}
 

+ 3 - 1
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;

+ 1 - 3
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 @@ pp_found:
 			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;