l2tp: fix error handling of PPPoL2TP socket options
Subsystems (3)
cover l2tp: fix error handling of PPPoL2TP socket options
Fix pppol2tp_[gs]etsockopt() so that they don't ignore errors returned by their helper functions.
Guillaume Nault (2):
l2tp: don't mask errors in pppol2tp_setsockopt()
l2tp: don't mask errors in pppol2tp_getsockopt()
net/l2tp/l2tp_ppp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/2 l2tp: don't mask errors in pppol2tp_setsockopt()
pppol2tp_setsockopt() unconditionally overwrites the error value returned by pppol2tp_tunnel_setsockopt() or pppol2tp_session_setsockopt(), thus hiding errors from userspace.
--- net/l2tp/l2tp_ppp.c | 2 -- 1 file changed, 2 deletions(-)
net/l2tp/l2tp_ppp.c +0 -2
@@ -1383,8 +1383,6 @@ static int pppol2tp_setsockopt(struct socket *sock, int level, int optname, }else err =pppol2tp_session_setsockopt (sk, session, optname, val); - err =0 ; - end_put_sess:sock_put (sk); end:
Signature · 1 line
2.11.0
PATCH 2/2 l2tp: don't mask errors in pppol2tp_getsockopt()
In reply to Guillaume Naultpppol2tp_getsockopt() doesn't take into account the error code returned by pppol2tp_tunnel_getsockopt() or pppol2tp_session_getsockopt(). If error occurs there, pppol2tp_getsockopt() continues unconditionally and reports erroneous values.
--- net/l2tp/l2tp_ppp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
net/l2tp/l2tp_ppp.c +6 -1
@@ -1505,8 +1505,13 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, int optname, err =pppol2tp_tunnel_getsockopt (sk, tunnel, optname, &val);sock_put (ps->tunnel_sock); - }else +if (err) + goto end_put_sess; + }else { err =pppol2tp_session_getsockopt (sk, session, optname, &val); +if (err) + goto end_put_sess; + } err = -EFAULT ;if (put_user (len, optlen))
Signature · 1 line
2.11.0
David Miller
maintainerFrom: Guillaume Nault <[email protected]>
Date: Thu, 6 Apr 2017 18:31:18 +0200
Quoted 2 lines
Fix pppol2tp_[gs]etsockopt() so that they don't ignore errors returned by their helper functions.
Series applied, thanks.