]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - net/l2tp/l2tp_ppp.c
l2tp: take reference on sessions being dumped
[mirror_ubuntu-zesty-kernel.git] / net / l2tp / l2tp_ppp.c
index 123b6a2411a03832b1b927a6b0eb47d5617f23a1..2f1944c99672ceacc6468c5a6ee542d6054b1b3a 100644 (file)
@@ -1555,7 +1555,7 @@ static void pppol2tp_next_tunnel(struct net *net, struct pppol2tp_seq_data *pd)
 
 static void pppol2tp_next_session(struct net *net, struct pppol2tp_seq_data *pd)
 {
-       pd->session = l2tp_session_find_nth(pd->tunnel, pd->session_idx);
+       pd->session = l2tp_session_get_nth(pd->tunnel, pd->session_idx, true);
        pd->session_idx++;
 
        if (pd->session == NULL) {
@@ -1682,10 +1682,14 @@ static int pppol2tp_seq_show(struct seq_file *m, void *v)
 
        /* Show the tunnel or session context.
         */
-       if (pd->session == NULL)
+       if (!pd->session) {
                pppol2tp_seq_tunnel_show(m, pd->tunnel);
-       else
+       } else {
                pppol2tp_seq_session_show(m, pd->session);
+               if (pd->session->deref)
+                       pd->session->deref(pd->session);
+               l2tp_session_dec_refcount(pd->session);
+       }
 
 out:
        return 0;