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)
committerDavid S. Miller <davem@davemloft.net>
Thu, 15 Nov 2018 06:49:31 +0000 (22:49 -0800)
commitf8504f4ca0a0e9f84546ef86e00b24d2ea9a0bd2
treec49fba072a648b622d149a1d47d2379a2d2cb439
parent007b656851ed7f94ba0fa358ac3e5d7705da6846
l2tp: fix a sock refcnt leak in l2tp_tunnel_register

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>
net/l2tp/l2tp_core.c