All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Parkin <tparkin@katalix.com>
To: netdev@vger.kernel.org
Cc: Tom Parkin <tparkin@katalix.com>
Subject: [PATCH 00/12] l2tp bugfix patchset
Date: Tue, 19 Mar 2013 16:11:11 +0000	[thread overview]
Message-ID: <1363709483-24021-1-git-send-email-tparkin@katalix.com> (raw)

This l2tp bugfix patchset addresses a number of issues.

The first five patches in the series prevent l2tp sessions pinning an l2tp
tunnel open.  This occurs because the l2tp tunnel is torn down in the tunnel
socket destructor, but each session holds a tunnel socket reference which
prevents tunnels with sessions being deleted.  The solution I've implemented
here involves adding a .destroy hook to udp code, as discussed previously on
netdev[1].

The subsequent seven patches address futher bugs exposed by fixing the problem
above, or exposed through stress testing the implementation above.  Patch 11
(avoid deadlock in l2tp stats update) isn't directly related to tunnel/session
lifetimes, but it does prevent deadlocks on i386 kernels running on 64 bit
hardware.

This patchset has been tested on 32 and 64 bit preempt/non-preempt kernels,
using iproute2, openl2tp, and custom-made stress test code.

[1] http://comments.gmane.org/gmane.linux.network/259169

Tom Parkin (12):
  udp: add encap_destroy callback
  l2tp: add udp encap socket destroy handler
  l2tp: export l2tp_tunnel_closeall
  l2tp: close sessions in ip socket destroy callback
  l2tp: close sessions before initiating tunnel delete
  l2tp: take a reference for kernel sockets in l2tp_tunnel_sock_lookup
  l2tp: don't BUG_ON sk_socket being NULL
  l2tp: add session reorder queue purge function to core
  l2tp: purge session reorder queue on delete
  l2tp: push all ppp pseudowire shutdown through .release handler
  l2tp: avoid deadlock in l2tp stats update
  l2tp: unhash l2tp sessions on delete, not on free

 include/linux/udp.h     |    1 +
 net/ipv4/udp.c          |    7 ++
 net/ipv6/udp.c          |    8 ++
 net/l2tp/l2tp_core.c    |  206 +++++++++++++++++++++++------------------------
 net/l2tp/l2tp_core.h    |   22 ++---
 net/l2tp/l2tp_debugfs.c |   28 +++----
 net/l2tp/l2tp_ip.c      |    6 ++
 net/l2tp/l2tp_ip6.c     |    7 ++
 net/l2tp/l2tp_netlink.c |   72 +++++++----------
 net/l2tp/l2tp_ppp.c     |  111 +++++++++----------------
 10 files changed, 220 insertions(+), 248 deletions(-)

-- 
1.7.9.5

             reply	other threads:[~2013-03-19 16:11 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-19 16:11 Tom Parkin [this message]
2013-03-19 16:11 ` [PATCH 01/12] udp: add encap_destroy callback Tom Parkin
2013-03-19 16:11 ` [PATCH 02/12] l2tp: add udp encap socket destroy handler Tom Parkin
2013-03-19 16:11 ` [PATCH 03/12] l2tp: export l2tp_tunnel_closeall Tom Parkin
2013-03-19 16:11 ` [PATCH 04/12] l2tp: close sessions in ip socket destroy callback Tom Parkin
2013-03-19 16:11 ` [PATCH 05/12] l2tp: close sessions before initiating tunnel delete Tom Parkin
2013-03-19 16:11 ` [PATCH 06/12] l2tp: take a reference for kernel sockets in l2tp_tunnel_sock_lookup Tom Parkin
2013-03-19 16:11 ` [PATCH 07/12] l2tp: don't BUG_ON sk_socket being NULL Tom Parkin
2013-03-19 16:11 ` [PATCH 08/12] l2tp: add session reorder queue purge function to core Tom Parkin
2013-03-19 16:11 ` [PATCH 09/12] l2tp: purge session reorder queue on delete Tom Parkin
2013-03-19 16:11 ` [PATCH 10/12] l2tp: push all ppp pseudowire shutdown through .release handler Tom Parkin
2013-03-19 16:11 ` [PATCH 11/12] l2tp: avoid deadlock in l2tp stats update Tom Parkin
2013-03-19 16:11 ` [PATCH 12/12] l2tp: unhash l2tp sessions on delete, not on free Tom Parkin
2013-03-20 16:14 ` [PATCH 00/12] l2tp bugfix patchset David Miller

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=1363709483-24021-1-git-send-email-tparkin@katalix.com \
    --to=tparkin@katalix.com \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.