From: James Chapman <jchapman@katalix.com>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, dsahern@kernel.org, tparkin@katalix.com
Subject: [RFC PATCH 00/15] l2tp: simplify tunnel and session cleanup
Date: Tue, 23 Jul 2024 14:51:28 +0100 [thread overview]
Message-ID: <cover.1721733730.git.jchapman@katalix.com> (raw)
This series simplifies and improves l2tp tunnel and session cleanup.
* refactor l2tp management code to not use the tunnel socket's
sk_user_data. This allows the tunnel and its socket to be closed
and freed without sequencing the two using the socket's sk_destruct
hook.
* export ip_flush_pending_frames and use it when closing l2tp_ip
sockets.
* move the work of closing all sessions in the tunnel to the work
queue so that sessions are deleted using the same codepath whether
they are closed by user API request or their parent tunnel is
closing.
* refactor l2tp_ppp to have session lifetimes managed by the
session's refcount such that the session holds a ref on its pppox
socket while it references it. Previously the pppox socket held a
ref on the session, which complicated session delete by having to
go through the socket destructor.
* free sessions and pppox sockets by rcu.
* fix a possible tunnel refcount underflow.
* avoid using rcu_barrier in net exit handler.
James Chapman (15):
l2tp: lookup tunnel from socket without using sk_user_data
ipv4: export ip_flush_pending_frames
l2tp: have l2tp_ip_destroy_sock use ip_flush_pending_frames
l2tp: don't use tunnel socket sk_user_data in ppp procfs output
l2tp: don't set sk_user_data in tunnel socket
l2tp: remove unused tunnel magic field
l2tp: simplify tunnel and socket cleanup
l2tp: delete sessions using work queue
l2tp: free sessions using rcu
l2tp: refactor ppp socket/session relationship
l2tp: prevent possible tunnel refcount underflow
l2tp: use rcu list add/del when updating lists
l2tp: add idr consistency check in session_register
l2tp: cleanup eth/ppp pseudowire setup code
l2tp: use pre_exit pernet hook to avoid rcu_barrier
net/ipv4/ip_output.c | 1 +
net/l2tp/l2tp_core.c | 199 ++++++++++++++++++++++------------------
net/l2tp/l2tp_core.h | 14 +--
net/l2tp/l2tp_eth.c | 2 +-
net/l2tp/l2tp_ip.c | 13 ++-
net/l2tp/l2tp_ip6.c | 7 +-
net/l2tp/l2tp_netlink.c | 4 +-
net/l2tp/l2tp_ppp.c | 107 ++++++++++-----------
8 files changed, 179 insertions(+), 168 deletions(-)
--
2.34.1
next reply other threads:[~2024-07-23 13:51 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-23 13:51 James Chapman [this message]
2024-07-23 13:51 ` [RFC PATCH 01/15] l2tp: lookup tunnel from socket without using sk_user_data James Chapman
2024-07-24 16:33 ` Simon Horman
2024-07-25 7:44 ` James Chapman
2024-07-23 13:51 ` [RFC PATCH 02/15] ipv4: export ip_flush_pending_frames James Chapman
2024-07-23 13:51 ` [RFC PATCH 03/15] l2tp: have l2tp_ip_destroy_sock use ip_flush_pending_frames James Chapman
2024-07-23 13:51 ` [RFC PATCH 04/15] l2tp: don't use tunnel socket sk_user_data in ppp procfs output James Chapman
2024-07-23 13:51 ` [RFC PATCH 05/15] l2tp: don't set sk_user_data in tunnel socket James Chapman
2024-07-23 13:51 ` [RFC PATCH 06/15] l2tp: remove unused tunnel magic field James Chapman
2024-07-23 13:51 ` [RFC PATCH 07/15] l2tp: simplify tunnel and socket cleanup James Chapman
2024-07-23 13:51 ` [RFC PATCH 08/15] l2tp: delete sessions using work queue James Chapman
2024-07-23 13:51 ` [RFC PATCH 09/15] l2tp: free sessions using rcu James Chapman
2024-07-23 13:51 ` [RFC PATCH 10/15] l2tp: refactor ppp socket/session relationship James Chapman
2024-07-23 13:51 ` [RFC PATCH 11/15] l2tp: prevent possible tunnel refcount underflow James Chapman
2024-07-23 13:51 ` [RFC PATCH 12/15] l2tp: use rcu list add/del when updating lists James Chapman
2024-07-23 13:51 ` [RFC PATCH 13/15] l2tp: add idr consistency check in session_register James Chapman
2024-07-23 13:51 ` [RFC PATCH 14/15] l2tp: cleanup eth/ppp pseudowire setup code James Chapman
2024-07-23 13:51 ` [RFC PATCH 15/15] l2tp: use pre_exit pernet hook to avoid rcu_barrier James Chapman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1721733730.git.jchapman@katalix.com \
--to=jchapman@katalix.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=tparkin@katalix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).