]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/sctp/associola.c
Merge tag 'iwlwifi-next-for-kalle-2016-01-07_2' of https://git.kernel.org/pub/scm...
[karo-tx-linux.git] / net / sctp / associola.c
index 559afd0ee7de099ba013c8921045fedb4e7e5488..2bf8ec92dde482ed6ab59275aad492d5abc5385e 100644 (file)
@@ -383,6 +383,7 @@ void sctp_association_free(struct sctp_association *asoc)
        list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
                transport = list_entry(pos, struct sctp_transport, transports);
                list_del_rcu(pos);
+               sctp_unhash_transport(transport);
                sctp_transport_free(transport);
        }
 
@@ -500,6 +501,8 @@ void sctp_assoc_rm_peer(struct sctp_association *asoc,
 
        /* Remove this peer from the list. */
        list_del_rcu(&peer->transports);
+       /* Remove this peer from the transport hashtable */
+       sctp_unhash_transport(peer);
 
        /* Get the first transport of asoc. */
        pos = asoc->peer.transport_addr_list.next;
@@ -699,6 +702,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
        /* Attach the remote transport to our asoc.  */
        list_add_tail_rcu(&peer->transports, &asoc->peer.transport_addr_list);
        asoc->peer.transport_count++;
+       /* Add this peer into the transport hashtable */
+       sctp_hash_transport(peer);
 
        /* If we do not yet have a primary path, set one.  */
        if (!asoc->peer.primary_path) {