l2tp: Correctly return -EBADF from pppol2tp_getname.
commit 4ac36a4adaf80013a60013d6f829f5863d5d0e05 upstream.
If 'tunnel' is NULL we should return -EBADF but the 'end_put_sess' path
unconditionally sets 'error' back to zero. Rework the error path so it
more closely matches pppol2tp_sendmsg.
Fixes: fd558d186d
("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b4a7e78cb7
commit
890a9c4b3f
1 changed files with 2 additions and 5 deletions
|
@ -889,10 +889,8 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||||
|
|
||||||
pls = l2tp_session_priv(session);
|
pls = l2tp_session_priv(session);
|
||||||
tunnel = l2tp_sock_to_tunnel(pls->tunnel_sock);
|
tunnel = l2tp_sock_to_tunnel(pls->tunnel_sock);
|
||||||
if (tunnel == NULL) {
|
if (tunnel == NULL)
|
||||||
error = -EBADF;
|
|
||||||
goto end_put_sess;
|
goto end_put_sess;
|
||||||
}
|
|
||||||
|
|
||||||
inet = inet_sk(tunnel->sock);
|
inet = inet_sk(tunnel->sock);
|
||||||
if ((tunnel->version == 2) && (tunnel->sock->sk_family == AF_INET)) {
|
if ((tunnel->version == 2) && (tunnel->sock->sk_family == AF_INET)) {
|
||||||
|
@ -970,12 +968,11 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
*usockaddr_len = len;
|
*usockaddr_len = len;
|
||||||
|
error = 0;
|
||||||
|
|
||||||
sock_put(pls->tunnel_sock);
|
sock_put(pls->tunnel_sock);
|
||||||
end_put_sess:
|
end_put_sess:
|
||||||
sock_put(sk);
|
sock_put(sk);
|
||||||
error = 0;
|
|
||||||
|
|
||||||
end:
|
end:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue