sctp: fix dst leak
authorMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Wed, 2 Sep 2015 19:20:21 +0000 (16:20 -0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Sep 2015 22:43:05 +0000 (15:43 -0700)
Commit 0ca50d12fe46 failed to release the reference to dst entries that
it decided to skip.

Fixes: 0ca50d12fe46 ("sctp: fix src address selection if using secondary addresses")
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/protocol.c

index 4345790ad3266c353eeac5398593c2a9ce4effda..4abf94d4cce769371260b42d13c38dbe5776c809 100644 (file)
@@ -511,8 +511,10 @@ static void sctp_v4_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
                 */
                odev = __ip_dev_find(sock_net(sk), laddr->a.v4.sin_addr.s_addr,
                                     false);
-               if (!odev || odev->ifindex != fl4->flowi4_oif)
+               if (!odev || odev->ifindex != fl4->flowi4_oif) {
+                       dst_release(&rt->dst);
                        continue;
+               }
 
                dst = &rt->dst;
                break;