aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphil.turnbull@oracle.com <phil.turnbull@oracle.com>2016-07-26 15:14:35 -0400
committerDavid S. Miller <davem@davemloft.net>2016-07-26 18:19:46 -0400
commit4ac36a4adaf80013a60013d6f829f5863d5d0e05 (patch)
treec46aae34abc1e0b5184dd020d168e22facf56015
parent0a91605cda883f7a25b1e7fa8cdc3f633ae8f8e0 (diff)
l2tp: Correctly return -EBADF from pppol2tp_getname.
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: fd558d186df2 ("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>
-rw-r--r--net/l2tp/l2tp_ppp.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index 652c250b9a3b..d9560aa2dba3 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -866,10 +866,8 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
866 866
867 pls = l2tp_session_priv(session); 867 pls = l2tp_session_priv(session);
868 tunnel = l2tp_sock_to_tunnel(pls->tunnel_sock); 868 tunnel = l2tp_sock_to_tunnel(pls->tunnel_sock);
869 if (tunnel == NULL) { 869 if (tunnel == NULL)
870 error = -EBADF;
871 goto end_put_sess; 870 goto end_put_sess;
872 }
873 871
874 inet = inet_sk(tunnel->sock); 872 inet = inet_sk(tunnel->sock);
875 if ((tunnel->version == 2) && (tunnel->sock->sk_family == AF_INET)) { 873 if ((tunnel->version == 2) && (tunnel->sock->sk_family == AF_INET)) {
@@ -947,12 +945,11 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr,
947 } 945 }
948 946
949 *usockaddr_len = len; 947 *usockaddr_len = len;
948 error = 0;
950 949
951 sock_put(pls->tunnel_sock); 950 sock_put(pls->tunnel_sock);
952end_put_sess: 951end_put_sess:
953 sock_put(sk); 952 sock_put(sk);
954 error = 0;
955
956end: 953end:
957 return error; 954 return error;
958} 955}