l2tp: fix a sock refcnt leak in l2tp_tunnel_register
authorXin Long <lucien.xin@gmail.com>
Mon, 12 Nov 2018 17:08:25 +0000 (01:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Nov 2018 07:17:05 +0000 (08:17 +0100)
commit79272fc2c124166ea9c0960241fc60cd47712ef3
tree7831ab45015c9de8735e57c27bfbecc2968ef244
parent115973a608a1d99f8569496cb6f0f165be325f19
l2tp: fix a sock refcnt leak in l2tp_tunnel_register

[ Upstream commit f8504f4ca0a0e9f84546ef86e00b24d2ea9a0bd2 ]

This issue happens when trying to add an existent tunnel. It
doesn't call sock_put() before returning -EEXIST to release
the sock refcnt that was held by calling sock_hold() before
the existence check.

This patch is to fix it by holding the sock after doing the
existence check.

Fixes: f6cd651b056f ("l2tp: fix race in duplicate tunnel detection")
Reported-by: Jianlin Shi <jishi@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/l2tp/l2tp_core.c