* [PATCH net-next] l2tp: consistent reference counting in procfs and debufs
@ 2018-04-25 17:54 Guillaume Nault
2018-04-27 15:06 ` David Miller
0 siblings, 1 reply; 3+ messages in thread
From: Guillaume Nault @ 2018-04-25 17:54 UTC (permalink / raw)
To: netdev; +Cc: James Chapman
The 'pppol2tp' procfs and 'l2tp/tunnels' debugfs files handle reference
counting of sessions differently than for tunnels.
For consistency, use the same mechanism for handling both sessions and
tunnels. That is, drop the reference on the previous session just
before looking up the next one (rather than in .show()). If necessary
(if dump stops before *_next_session() returns NULL), drop the last
reference in .stop().
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
---
net/l2tp/l2tp_debugfs.c | 20 +++++++++++++-------
net/l2tp/l2tp_ppp.c | 21 +++++++++++++--------
2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/net/l2tp/l2tp_debugfs.c b/net/l2tp/l2tp_debugfs.c
index 7f1e842ef05a..e87686f7d63c 100644
--- a/net/l2tp/l2tp_debugfs.c
+++ b/net/l2tp/l2tp_debugfs.c
@@ -57,6 +57,10 @@ static void l2tp_dfs_next_tunnel(struct l2tp_dfs_seq_data *pd)
static void l2tp_dfs_next_session(struct l2tp_dfs_seq_data *pd)
{
+ /* Drop reference taken during previous invocation */
+ if (pd->session)
+ l2tp_session_dec_refcount(pd->session);
+
pd->session = l2tp_session_get_nth(pd->tunnel, pd->session_idx);
pd->session_idx++;
@@ -105,11 +109,16 @@ static void l2tp_dfs_seq_stop(struct seq_file *p, void *v)
if (!pd || pd == SEQ_START_TOKEN)
return;
- /* Drop reference taken by last invocation of l2tp_dfs_next_tunnel() */
+ /* Drop reference taken by last invocation of l2tp_dfs_next_session()
+ * or l2tp_dfs_next_tunnel().
+ */
+ if (pd->session) {
+ l2tp_session_dec_refcount(pd->session);
+ pd->session = NULL;
+ }
if (pd->tunnel) {
l2tp_tunnel_dec_refcount(pd->tunnel);
pd->tunnel = NULL;
- pd->session = NULL;
}
}
@@ -250,13 +259,10 @@ static int l2tp_dfs_seq_show(struct seq_file *m, void *v)
goto out;
}
- /* Show the tunnel or session context */
- if (!pd->session) {
+ if (!pd->session)
l2tp_dfs_seq_tunnel_show(m, pd->tunnel);
- } else {
+ else
l2tp_dfs_seq_session_show(m, pd->session);
- l2tp_session_dec_refcount(pd->session);
- }
out:
return 0;
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index 1fd9e145076a..f951c768dcf2 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -1576,6 +1576,10 @@ 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)
{
+ /* Drop reference taken during previous invocation */
+ if (pd->session)
+ l2tp_session_dec_refcount(pd->session);
+
pd->session = l2tp_session_get_nth(pd->tunnel, pd->session_idx);
pd->session_idx++;
@@ -1624,11 +1628,16 @@ static void pppol2tp_seq_stop(struct seq_file *p, void *v)
if (!pd || pd == SEQ_START_TOKEN)
return;
- /* Drop reference taken by last invocation of pppol2tp_next_tunnel() */
+ /* Drop reference taken by last invocation of pppol2tp_next_session()
+ * or pppol2tp_next_tunnel().
+ */
+ if (pd->session) {
+ l2tp_session_dec_refcount(pd->session);
+ pd->session = NULL;
+ }
if (pd->tunnel) {
l2tp_tunnel_dec_refcount(pd->tunnel);
pd->tunnel = NULL;
- pd->session = NULL;
}
}
@@ -1723,14 +1732,10 @@ static int pppol2tp_seq_show(struct seq_file *m, void *v)
goto out;
}
- /* Show the tunnel or session context.
- */
- if (!pd->session) {
+ if (!pd->session)
pppol2tp_seq_tunnel_show(m, pd->tunnel);
- } else {
+ else
pppol2tp_seq_session_show(m, pd->session);
- l2tp_session_dec_refcount(pd->session);
- }
out:
return 0;
--
2.17.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net-next] l2tp: consistent reference counting in procfs and debufs
2018-04-25 17:54 [PATCH net-next] l2tp: consistent reference counting in procfs and debufs Guillaume Nault
@ 2018-04-27 15:06 ` David Miller
2018-04-27 15:44 ` Guillaume Nault
0 siblings, 1 reply; 3+ messages in thread
From: David Miller @ 2018-04-27 15:06 UTC (permalink / raw)
To: g.nault; +Cc: netdev, jchapman
From: Guillaume Nault <g.nault@alphalink.fr>
Date: Wed, 25 Apr 2018 19:54:14 +0200
> The 'pppol2tp' procfs and 'l2tp/tunnels' debugfs files handle reference
> counting of sessions differently than for tunnels.
>
> For consistency, use the same mechanism for handling both sessions and
> tunnels. That is, drop the reference on the previous session just
> before looking up the next one (rather than in .show()). If necessary
> (if dump stops before *_next_session() returns NULL), drop the last
> reference in .stop().
>
> Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Applied.
Your continued bug fixing and clenaups in this area are very much appreciated.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] l2tp: consistent reference counting in procfs and debufs
2018-04-27 15:06 ` David Miller
@ 2018-04-27 15:44 ` Guillaume Nault
0 siblings, 0 replies; 3+ messages in thread
From: Guillaume Nault @ 2018-04-27 15:44 UTC (permalink / raw)
To: David Miller; +Cc: netdev, jchapman
On Fri, Apr 27, 2018 at 11:06:55AM -0400, David Miller wrote:
> From: Guillaume Nault <g.nault@alphalink.fr>
> Date: Wed, 25 Apr 2018 19:54:14 +0200
>
> > The 'pppol2tp' procfs and 'l2tp/tunnels' debugfs files handle reference
> > counting of sessions differently than for tunnels.
> >
> > For consistency, use the same mechanism for handling both sessions and
> > tunnels. That is, drop the reference on the previous session just
> > before looking up the next one (rather than in .show()). If necessary
> > (if dump stops before *_next_session() returns NULL), drop the last
> > reference in .stop().
> >
> > Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
>
> Applied.
>
> Your continued bug fixing and clenaups in this area are very much appreciated.
Nice to see that it's appreciated. Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-04-27 15:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-25 17:54 [PATCH net-next] l2tp: consistent reference counting in procfs and debufs Guillaume Nault
2018-04-27 15:06 ` David Miller
2018-04-27 15:44 ` Guillaume Nault
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox