The original L2TP code was written for version 2 of the protocol, which could only carry PPP sessions. Then L2TPv3 generalised the protocol so that it could transport different kinds of pseudo-wires. But parts of the l2tp_ppp module still break in presence of non-PPP sessions.
Assuming L2TPv2 tunnels can only transport PPP sessions is right, but l2tp_netlink failed to ensure that (fixed in patch 1). When retrieving a session from an arbitrary tunnel, l2tp_ppp needs to filter out non-PPP sessions (last occurrence fixed in patch 2). Guillaume Nault (2): l2tp: reject creation of non-PPP sessions on L2TPv2 tunnels l2tp: filter out non-PPP sessions in pppol2tp_tunnel_ioctl() net/l2tp/l2tp_netlink.c | 6 ++++++ net/l2tp/l2tp_ppp.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) -- 2.17.1