l2tp: only accept PPP sessions in pppol2tp_connect()
authorGuillaume Nault <g.nault@alphalink.fr>
Wed, 13 Jun 2018 13:09:19 +0000 (15:09 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Jun 2018 00:10:19 +0000 (17:10 -0700)
commit7ac6ab1f8a38ba7f8d97f95475bb6a2575db4658
tree1f554212a69107c536ef0cb58180deed08be415d
parent90904ff5f958a215cc3d26f957a46e80fa178470
l2tp: only accept PPP sessions in pppol2tp_connect()

l2tp_session_priv() returns a struct pppol2tp_session pointer only for
PPPoL2TP sessions. In particular, if the session is an L2TP_PWTYPE_ETH
pseudo-wire, l2tp_session_priv() returns a pointer to an l2tp_eth_sess
structure, which is much smaller than struct pppol2tp_session. This
leads to invalid memory dereference when trying to lock ps->sk_lock.

Fixes: d9e31d17ceba ("l2tp: Add L2TP ethernet pseudowire support")
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/l2tp/l2tp_ppp.c