From: David Miller <davem@davemloft.net>
To: g.nault@alphalink.fr
Cc: netdev@vger.kernel.org, jchapman@katalix.com, celston@katalix.com
Subject: Re: [PATCH net] l2tp: don't use l2tp_tunnel_find() in l2tp_ip and l2tp_ip6
Date: Sun, 05 Nov 2017 22:22:28 +0900 (KST) [thread overview]
Message-ID: <20171105.222228.340963731082709999.davem@davemloft.net> (raw)
In-Reply-To: <8d82022c67fe889aeabf04e49f1b2792a9471b1e.1509723963.git.g.nault@alphalink.fr>
From: Guillaume Nault <g.nault@alphalink.fr>
Date: Fri, 3 Nov 2017 16:49:00 +0100
> Using l2tp_tunnel_find() in l2tp_ip_recv() is wrong for two reasons:
>
> * It doesn't take a reference on the returned tunnel, which makes the
> call racy wrt. concurrent tunnel deletion.
>
> * The lookup is only based on the tunnel identifier, so it can return
> a tunnel that doesn't match the packet's addresses or protocol.
>
> For example, a packet sent to an L2TPv3 over IPv6 tunnel can be
> delivered to an L2TPv2 over UDPv4 tunnel. This is worse than a simple
> cross-talk: when delivering the packet to an L2TP over UDP tunnel, the
> corresponding socket is UDP, where ->sk_backlog_rcv() is NULL. Calling
> sk_receive_skb() will then crash the kernel by trying to execute this
> callback.
>
> And l2tp_tunnel_find() isn't even needed here. __l2tp_ip_bind_lookup()
> properly checks the socket binding and connection settings. It was used
> as a fallback mechanism for finding tunnels that didn't have their data
> path registered yet. But it's not limited to this case and can be used
> to replace l2tp_tunnel_find() in the general case.
>
> Fix l2tp_ip6 in the same way.
>
> Fixes: 0d76751fad77 ("l2tp: Add L2TPv3 IP encapsulation (no UDP) support")
> Fixes: a32e0eec7042 ("l2tp: introduce L2TPv3 IP encapsulation support for IPv6")
> Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Applied, thanks.
prev parent reply other threads:[~2017-11-05 13:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-03 15:49 [PATCH net] l2tp: don't use l2tp_tunnel_find() in l2tp_ip and l2tp_ip6 Guillaume Nault
2017-11-05 13:22 ` David Miller [this message]
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=20171105.222228.340963731082709999.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=celston@katalix.com \
--cc=g.nault@alphalink.fr \
--cc=jchapman@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 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).