sctp: add pr_debug for tracking asocs not found
authorMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Wed, 28 Dec 2016 11:51:56 +0000 (09:51 -0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Dec 2016 19:26:17 +0000 (14:26 -0500)
This pr_debug may help identify why the system is generating some
Aborts. It's not something a sysadmin would be expected to use.

Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/input.c

index 458e506ef84bae3c53c239d6cf89a9349faafb11..704ad19c1565fe5d8a8aad8e73be124f4c21e0f1 100644 (file)
@@ -1229,13 +1229,26 @@ static struct sctp_association *__sctp_rcv_lookup(struct net *net,
        struct sctp_association *asoc;
 
        asoc = __sctp_lookup_association(net, laddr, paddr, transportp);
+       if (asoc)
+               goto out;
 
        /* Further lookup for INIT/INIT-ACK packets.
         * SCTP Implementors Guide, 2.18 Handling of address
         * parameters within the INIT or INIT-ACK.
         */
-       if (!asoc)
-               asoc = __sctp_rcv_lookup_harder(net, skb, laddr, transportp);
+       asoc = __sctp_rcv_lookup_harder(net, skb, laddr, transportp);
+       if (asoc)
+               goto out;
 
+       if (paddr->sa.sa_family == AF_INET)
+               pr_debug("sctp: asoc not found for src:%pI4:%d dst:%pI4:%d\n",
+                        &laddr->v4.sin_addr, ntohs(laddr->v4.sin_port),
+                        &paddr->v4.sin_addr, ntohs(paddr->v4.sin_port));
+       else
+               pr_debug("sctp: asoc not found for src:%pI6:%d dst:%pI6:%d\n",
+                        &laddr->v6.sin6_addr, ntohs(laddr->v6.sin6_port),
+                        &paddr->v6.sin6_addr, ntohs(paddr->v6.sin6_port));
+
+out:
        return asoc;
 }