Re: [PATCH net-next 4/6] l2tp: ppp: convert to getsockopt_iter
Stanislav Fomichev <[email protected]> Wed, 13 May 2026 08:32:39 -0700
| Newsgroups | dev.linux.lists.oe-linux-nfc,org.kernel.vger.bpf,org.kernel.vger.linux-kernel,org.kernel.vger.linux-s390,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 05/13, Breno Leitao wrote: > Convert PPPoL2TP socket's getsockopt implementation to use the new > getsockopt_iter callback with sockopt_t. > > Key changes: > - Replace (char __user *optval, int __user *optlen) with sockopt_t *opt > - Use opt->optlen for buffer length (input) and returned size (output) > - Use copy_to_iter() instead of put_user()/copy_to_user() > > Signed-off-by: Breno Leitao <[email protected]> > --- > net/l2tp/l2tp_ppp.c | 18 ++++++++---------- > 1 file changed, 8 insertions(+), 10 deletions(-) > > diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c > index 99d6582f41de2..4c7a1152b20ba 100644 > --- a/net/l2tp/l2tp_ppp.c > +++ b/net/l2tp/l2tp_ppp.c > @@ -59,6 +59,7 @@ > #include <linux/string.h> > #include <linux/list.h> > #include <linux/uaccess.h> > +#include <linux/uio.h> > > #include <linux/kernel.h> > #include <linux/spinlock.h> > @@ -1317,7 +1318,7 @@ static int pppol2tp_session_getsockopt(struct sock *sk, > * or the special tunnel type. > */ > static int pppol2tp_getsockopt(struct socket *sock, int level, int optname, > - char __user *optval, int __user *optlen) > + sockopt_t *opt) > { > struct sock *sk = sock->sk; > struct l2tp_session *session; > @@ -1328,9 +1329,7 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, int optname, > if (level != SOL_PPPOL2TP) > return -EINVAL; > > - if (get_user(len, optlen)) > - return -EFAULT; > - > + len = opt->optlen; > if (len < 0) > return -EINVAL; > > @@ -1358,12 +1357,11 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, int optname, > goto end_put_sess; > } > > - err = -EFAULT; > - if (put_user(len, optlen)) > - goto end_put_sess; > - > - if (copy_to_user((void __user *)optval, &val, len)) > + opt->optlen = len; > + if (copy_to_iter(&val, len, &opt->iter_out) != len) { > + err = -EFAULT; > goto end_put_sess; > + } > > err = 0; nit: if you're moving `err = -EFAULT`, you might as well remove this `err = 0` ? Acked-by: Stanislav Fomichev <[email protected]>