浏览代码

[SCTP]: sctp_has_association() switched to net-endian.

Ditto for its only caller (sctp_endpoint_is_peeled_off)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Al Viro 18 年之前
父节点
当前提交
6c7be55ca0
共有 3 个文件被更改,包括 4 次插入7 次删除
  1. 1 1
      net/sctp/endpointola.c
  2. 1 4
      net/sctp/input.c
  3. 2 2
      net/sctp/socket.c

+ 1 - 1
net/sctp/endpointola.c

@@ -305,7 +305,7 @@ int sctp_endpoint_is_peeled_off(struct sctp_endpoint *ep,
 	bp = &ep->base.bind_addr;
 	list_for_each(pos, &bp->address_list) {
 		addr = list_entry(pos, struct sctp_sockaddr_entry, list);
-		if (sctp_has_association(&addr->a_h, paddr)) {
+		if (sctp_has_association(&addr->a, paddr)) {
 			sctp_read_unlock(&ep->base.addr_lock);
 			return 1;
 		}

+ 1 - 4
net/sctp/input.c

@@ -872,11 +872,8 @@ int sctp_has_association(const union sctp_addr *laddr,
 {
 	struct sctp_association *asoc;
 	struct sctp_transport *transport;
-	union sctp_addr tmp, tmp2;
-	flip_to_n(&tmp, laddr);
-	flip_to_n(&tmp2, paddr);
 
-	if ((asoc = sctp_lookup_association(&tmp, &tmp2, &transport))) {
+	if ((asoc = sctp_lookup_association(laddr, paddr, &transport))) {
 		sctp_association_put(asoc);
 		return 1;
 	}

+ 2 - 2
net/sctp/socket.c

@@ -1018,7 +1018,7 @@ static int __sctp_connect(struct sock* sk,
 		 * make sure that there is no peeled-off association matching
 		 * the peer address even on another socket.
 		 */
-		if (sctp_endpoint_is_peeled_off(ep, &to)) {
+		if (sctp_endpoint_is_peeled_off(ep, sa_addr)) {
 			err = -EADDRNOTAVAIL;
 			goto out_free;
 		}
@@ -1475,7 +1475,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
 			 */
 			if ((sctp_style(sk, TCP) &&
 			     sctp_sstate(sk, ESTABLISHED)) ||
-			    sctp_endpoint_is_peeled_off(ep, &to)) {
+			    sctp_endpoint_is_peeled_off(ep, &tmp)) {
 				err = -EADDRNOTAVAIL;
 				goto out_unlock;
 			}