l2tp: fix race in l2tp_recv_common()
authorGuillaume Nault <g.nault@alphalink.fr>
Fri, 31 Mar 2017 11:02:25 +0000 (13:02 +0200)
committerRaspbian kernel package updater <root@raspbian.org>
Sun, 23 Jul 2017 03:04:17 +0000 (03:04 +0000)
commit5cdcdc42c6fbd6d908bb8a68bbd38b4a29f0ff78
treeeda029a28a9dd573fa3cbe9f60d9a44cf0308dc8
parent40d7dbd6faaf1d77e3eab13f73b6f9447db00606
l2tp: fix race in l2tp_recv_common()

commit 61b9a047729bb230978178bca6729689d0c50ca2 upstream.

Taking a reference on sessions in l2tp_recv_common() is racy; this
has to be done by the callers.

To this end, a new function is required (l2tp_session_get()) to
atomically lookup a session and take a reference on it. Callers then
have to manually drop this reference.

Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/l2tp/l2tp_core.c
net/l2tp/l2tp_core.h
net/l2tp/l2tp_ip.c
net/l2tp/l2tp_ip6.c