]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sctp/associola.c
[SCTP]: Convert bind_addr_list locking to RCU
[linux-2.6-omap-h63xx.git] / net / sctp / associola.c
index 2ad1caf1ea42577205a5a61f7e4494125542671b..9bad8ba0feda9610d55c088153d3921ff8b69156 100644 (file)
@@ -99,7 +99,6 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
 
        /* Initialize the bind addr area.  */
        sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port);
-       rwlock_init(&asoc->base.addr_lock);
 
        asoc->state = SCTP_STATE_CLOSED;
 
@@ -937,8 +936,6 @@ struct sctp_transport *sctp_assoc_is_match(struct sctp_association *asoc,
 {
        struct sctp_transport *transport;
 
-       sctp_read_lock(&asoc->base.addr_lock);
-
        if ((htons(asoc->base.bind_addr.port) == laddr->v4.sin_port) &&
            (htons(asoc->peer.port) == paddr->v4.sin_port)) {
                transport = sctp_assoc_lookup_paddr(asoc, paddr);
@@ -952,7 +949,6 @@ struct sctp_transport *sctp_assoc_is_match(struct sctp_association *asoc,
        transport = NULL;
 
 out:
-       sctp_read_unlock(&asoc->base.addr_lock);
        return transport;
 }
 
@@ -1376,19 +1372,13 @@ int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc,
 int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
                            const union sctp_addr *laddr)
 {
-       int found;
+       int found = 0;
 
-       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, laddr,
-                                sctp_sk(asoc->base.sk))) {
+                                sctp_sk(asoc->base.sk)))
                found = 1;
-               goto out;
-       }
 
-       found = 0;
-out:
-       sctp_read_unlock(&asoc->base.addr_lock);
        return found;
 }