From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 454F73EFD0C; Wed, 13 May 2026 12:34:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675697; cv=none; b=W4VuuIFgRx+hMPGKFmu8r1eR/Iu7H31rBVnpwrv1cynMTFIRcufEYG0T+aSZsx6n1QZiaeHrYjS6snyd2TjqbYtCRaKzCpQH8+U181isZopQN4DbXFCHSPAxBbu87U8B0+eLjK0PJqa8rrsAuWjsXzEiUBNfnxSKPl0N9UJlcoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675697; c=relaxed/simple; bh=cotihfo1Bp/34MPHcrNscgZZlFHpB2wnf0qAKt7jQHQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lxcx5dttx0qdK17aCj9VMGvQjBejSlknUdU3FxvRtqyAbCeQvIFX0dhhQ219gSQQocL4B7cSmJxmDou4D1Ml0ppVCSAc+HSyJ4N4SpfYjhm5ikJeROb1HlvT7W9LbTUlg7s1XuDN6hGQR9eyZ7iHX67lBuAem/wMwbHybpw7YIk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=GUbPr2M9; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="GUbPr2M9" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=QvfLzpZ5p3ZyCP2o0RSxYmvBgDjWPHiLn0170VHtJ1s=; b=GUbPr2M9O9ziu130D1GpupW3bh MYY+rsOLkH9uEM2qNmxjG0GTPO6BehoPV347v21VnaHJX9L6MirsD5OAJzfEnYlByVAuwICxvdpzb IaDZgsQ0XCEcOTlPXR0rhBTQD3gC0XixGH8BbzPb+vfJwlsrZkuGIvOecNYSXc1SrqhZAfHO6rlTB 3LeltoERw5hLITKGtYkZa3R2iRrvUB6WESl6eDodxJtfaHlTQ602++OmsThskrbuD27w+VyN7rJlj 5SGA2ifUXNLvWZhkupmzo2tibMYoxA/ce4pVRP1n1UKmmdtORRHWJs1Ua5DYrvvvDUP3OkOLgDgph YULLSB5A==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8nN-003A89-2j; Wed, 13 May 2026 12:34:38 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:12 -0700 Subject: [PATCH net-next 1/6] atm: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-1-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=5539; i=leitao@debian.org; h=from:subject:message-id; bh=cotihfo1Bp/34MPHcrNscgZZlFHpB2wnf0qAKt7jQHQ=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/PJPmaySrhQsMA6XcpqSAip19+SSKBMC6vT kurMalQ3AeJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 bWG3EACkPeI4Ah5EBDdnfR3CbYoo1pvGWTh7i+GIQMfU74lfruS4JZrokiETu9DBImQZFb50YOG lUYgeDMAQ3nxMrw4FD13eUPUqTxQdtpfc4BT7bzR6lxJDF3iQA7CEiDXnQ+XMkBKMRe2bj8WQec YzZzFUlHKBijW5VtD3Z3PZb6RGgigERECZxTKabwg0ktBsX6bN089WG4glWcVPt3FWZnsJWrV/t gLMmu/kIEp/qp9lMHshzJk0lld5JfXN1ApLgEXfn2qzdtqObtIOdd0S0HkEhA63EugY7LlJu7Rj Cn05+MBIfS8VC8+ueHK/LcEHRxyrJ5LdFO3v56kwl8+kUzZsf6t1D99qlG6xb44WTtaC0kyTSeo zDHLeSuJsinY/V0+syvhNoCHQnC47zaTiWozKpXmB93J38ijHcDy9OlDM58LUmvvkBX2pJ0ouo8 O3b7zc2ndoD9Uks94NX/9ChrdPuqD0h4cBx/GqE07+RMJwd0NzwSD529rd2a9kVR+bO0lsj3AG6 E3hj0EL8ipwvcq1xbKW6OIJXpnknHcYnm/G5y8/a3gBHe75df1fY9zS40ny/nAYBuICPicSjmWD T1l+Udj6A8ulFe1DtDXgFIsdR3wjnzmLSHCPwaIt9ylmBJX2UmmBbJihkYuDG/ZP5f5l+ZXLF/w yT8YMxPf0p5ou1Q== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Convert the ATM SVC and PVC sockets, along with the shared vcc_getsockopt() helper, 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) - Use copy_to_iter() instead of put_user()/copy_to_user() Signed-off-by: Breno Leitao Acked-by: Stanislav Fomichev --- net/atm/common.c | 18 +++++++++++------- net/atm/common.h | 2 +- net/atm/pvc.c | 6 +++--- net/atm/svc.c | 15 +++++++-------- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/net/atm/common.c b/net/atm/common.c index fe77f51f6ce18..88483cedd25cc 100644 --- a/net/atm/common.c +++ b/net/atm/common.c @@ -23,6 +23,7 @@ #include /* struct sock */ #include #include +#include =20 #include =20 @@ -797,13 +798,13 @@ int vcc_setsockopt(struct socket *sock, int level, in= t optname, } =20 int vcc_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *optlen) + sockopt_t *opt) { struct atm_vcc *vcc; + unsigned long val; int len; =20 - if (get_user(len, optlen)) - return -EFAULT; + len =3D opt->optlen; if (__SO_LEVEL_MATCH(optname, level) && len !=3D __SO_SIZE(optname)) return -EINVAL; =20 @@ -812,11 +813,13 @@ int vcc_getsockopt(struct socket *sock, int level, in= t optname, case SO_ATMQOS: if (!test_bit(ATM_VF_HASQOS, &vcc->flags)) return -EINVAL; - return copy_to_user(optval, &vcc->qos, sizeof(vcc->qos)) + return copy_to_iter(&vcc->qos, sizeof(vcc->qos), + &opt->iter_out) !=3D sizeof(vcc->qos) ? -EFAULT : 0; case SO_SETCLP: - return put_user(vcc->atm_options & ATM_ATMOPT_CLP ? 1 : 0, - (unsigned long __user *)optval) ? -EFAULT : 0; + val =3D vcc->atm_options & ATM_ATMOPT_CLP ? 1 : 0; + return copy_to_iter(&val, sizeof(val), &opt->iter_out) !=3D + sizeof(val) ? -EFAULT : 0; case SO_ATMPVC: { struct sockaddr_atmpvc pvc; @@ -828,7 +831,8 @@ int vcc_getsockopt(struct socket *sock, int level, int = optname, pvc.sap_addr.itf =3D vcc->dev->number; pvc.sap_addr.vpi =3D vcc->vpi; pvc.sap_addr.vci =3D vcc->vci; - return copy_to_user(optval, &pvc, sizeof(pvc)) ? -EFAULT : 0; + return copy_to_iter(&pvc, sizeof(pvc), &opt->iter_out) !=3D + sizeof(pvc) ? -EFAULT : 0; } default: return -EINVAL; diff --git a/net/atm/common.h b/net/atm/common.h index a1e56e8de698a..ae4502abf0281 100644 --- a/net/atm/common.h +++ b/net/atm/common.h @@ -23,7 +23,7 @@ int vcc_compat_ioctl(struct socket *sock, unsigned int cm= d, unsigned long arg); int vcc_setsockopt(struct socket *sock, int level, int optname, sockptr_t optval, unsigned int optlen); int vcc_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *optlen); + sockopt_t *opt); void vcc_process_recv_queue(struct atm_vcc *vcc); =20 int atmpvc_init(void); diff --git a/net/atm/pvc.c b/net/atm/pvc.c index 8f5e76f5dd9e8..8b2c3e515601e 100644 --- a/net/atm/pvc.c +++ b/net/atm/pvc.c @@ -75,13 +75,13 @@ static int pvc_setsockopt(struct socket *sock, int leve= l, int optname, } =20 static int pvc_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *optlen) + sockopt_t *opt) { struct sock *sk =3D sock->sk; int error; =20 lock_sock(sk); - error =3D vcc_getsockopt(sock, level, optname, optval, optlen); + error =3D vcc_getsockopt(sock, level, optname, opt); release_sock(sk); return error; } @@ -122,7 +122,7 @@ static const struct proto_ops pvc_proto_ops =3D { .listen =3D sock_no_listen, .shutdown =3D pvc_shutdown, .setsockopt =3D pvc_setsockopt, - .getsockopt =3D pvc_getsockopt, + .getsockopt_iter =3D pvc_getsockopt, .sendmsg =3D vcc_sendmsg, .recvmsg =3D vcc_recvmsg, .mmap =3D sock_no_mmap, diff --git a/net/atm/svc.c b/net/atm/svc.c index 005964250ecd2..7c5559f50a99e 100644 --- a/net/atm/svc.c +++ b/net/atm/svc.c @@ -21,6 +21,7 @@ #include #include /* for sock_no_* */ #include +#include #include =20 #include "resources.h" @@ -501,25 +502,23 @@ static int svc_setsockopt(struct socket *sock, int le= vel, int optname, } =20 static int svc_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *optlen) + sockopt_t *opt) { struct sock *sk =3D sock->sk; int error =3D 0, len; =20 lock_sock(sk); if (!__SO_LEVEL_MATCH(optname, level) || optname !=3D SO_ATMSAP) { - error =3D vcc_getsockopt(sock, level, optname, optval, optlen); - goto out; - } - if (get_user(len, optlen)) { - error =3D -EFAULT; + error =3D vcc_getsockopt(sock, level, optname, opt); goto out; } + len =3D opt->optlen; if (len !=3D sizeof(struct atm_sap)) { error =3D -EINVAL; goto out; } - if (copy_to_user(optval, &ATM_SD(sock)->sap, sizeof(struct atm_sap))) { + if (copy_to_iter(&ATM_SD(sock)->sap, sizeof(struct atm_sap), + &opt->iter_out) !=3D sizeof(struct atm_sap)) { error =3D -EFAULT; goto out; } @@ -650,7 +649,7 @@ static const struct proto_ops svc_proto_ops =3D { .listen =3D svc_listen, .shutdown =3D svc_shutdown, .setsockopt =3D svc_setsockopt, - .getsockopt =3D svc_getsockopt, + .getsockopt_iter =3D svc_getsockopt, .sendmsg =3D vcc_sendmsg, .recvmsg =3D vcc_recvmsg, .mmap =3D sock_no_mmap, --=20 2.53.0-Meta From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 732B341B370; Wed, 13 May 2026 12:34:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675698; cv=none; b=s3mSNR68MlQ3dxPurNT2m650aFTkXvOrV7tlOGutw34IlI2ej5zXWezXGxUKjBJBnlBOT5o4JRksnTzRYLewGmmlvIp7bE+yo4iVlNgpsv6gTo+E7Rx+4+RucDv+nc5LltjgsIAKCM/T5fjANT/6q0U/3sTQDaiffJkh35RI/zM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675698; c=relaxed/simple; bh=5oT/aLBMv9wkg8/zsOy+l00lkNWyNDMzk98mghaX2+o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=naU3zLf6qv8lCEpmVItuvAaCxLjkEwqy+e68PEHVKZp9xbIyjx1Eu8ZvfqA1wOrM7IzC8qNpSGWzxqPEDHlZzR2+xKxEUtf1MYA9wD7k7p9gB/a1E/h9EPNtRFbae//iJwPQ7TwrSJ8BmPtmLucCtPBWWxUaGMuN45YMB2eEZxk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=In8hN+qG; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="In8hN+qG" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=krARNXEWrK0bUU1KDLEePU5qvlCpiZ9zejQmhk6GTp0=; b=In8hN+qGU4yVZ0T9ZVZDBl79vY OWfgfm42Yomazsj1h9uTpBPL4eOrWc0e5+EVbhE+pCyTVYPt15cOHYevNGkUPnTNRIwT1Vag6bV67 2KNHlG02gtOqwws92/GPimBGhcw2eCB1duDntZ2l2d9vgxFgC/YICwYxsOGY+69opsTbmkzBZyY3H Go9NUJvOrFJeo/a7NKxsE3iTs+Y5iwGWXn2vPz8D94STdFClKSUjMtpPKeJJWd9wZBLJjo63x2r4A Tq7c9lW0Jps1p729bMJ0uZo/iUn9Byd5haYjuqT89dAVO2lE13nkwMuzQBKNs2eutyDYnuF0qKX/D o3LQJsEQ==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8nU-003A8C-2I; Wed, 13 May 2026 12:34:45 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:13 -0700 Subject: [PATCH net-next 2/6] xdp: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-2-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=2839; i=leitao@debian.org; h=from:subject:message-id; bh=5oT/aLBMv9wkg8/zsOy+l00lkNWyNDMzk98mghaX2+o=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/PlszkdljAk0D6qJ3Q/CP8YqQaHtU38DpKg +KNkjIf4SOJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 bYCcD/40JBn5BdNiRB5Uk970kZ0ApjZH6avh2/n9kteRqeCXX03VaaSc/VZT68ie0bPDaRDwoEv GChrqRPErDQ3YYnJM4frV/v3JvcEtjTk9teSlRMuyZwxrPdQwiUPY7/QNL2zKMY6vd/wVxb1ovg 8Mvca9Zp5uM0ZHbVI7e2z4t/0f+afx3jouCFJWX/3BaaGrV8Ze4nVG/v2zIWN0Y8F4zxMEpvsRt wpNuL6FRfc/y8CUhGdOHwAV0aj7uumQ0TbYz8b+c+/9n9zJQuqQm3tzuqY71+yF6MoArLLQgQQX CuvPr0OPbkQoai7AoU6Gatjk6gS/3hIq0HTVp+4XDeLPvUFQEjzZPaW2xtrkz2EfpiAGmY+jy6W qybUIFH2VEEj/C5+cIEsEgxLFYw84vp20FsYQNXmRnvypYMuyDK2/91AFS4xiM6sbCDzcpWmhQ2 WsaXUI+LJoOVSPA4zThDJWZT+dK2vFL5yM1kKfWyGCExA47foxTTgQYZAeQ2BG/7rwgEZKqh+Ln oVH1QbOTAQSEOEM4VY2JrCMhkOEKrO5gsMaUvO4nzQWm+gB1tI1Z7pW8T3ciBVdR1hXv2TaAlUq LWxbeW8xvGq+aV6NAwhh7vrViZvamnFCHTmV4F0PxZkonA/bxuvmPC4QSdCMiGNEVcb6xgbjf+B TaYBDV3MFgrx+Fg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Convert XDP 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 Acked-by: Stanislav Fomichev --- net/xdp/xsk.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c index 5e5786cd9af55..77f8de054a1be 100644 --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -22,6 +22,7 @@ #include #include #include +#include #include =20 #include @@ -1729,7 +1730,7 @@ struct xdp_statistics_v1 { }; =20 static int xsk_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *optlen) + sockopt_t *opt) { struct sock *sk =3D sock->sk; struct xdp_sock *xs =3D xdp_sk(sk); @@ -1738,8 +1739,7 @@ static int xsk_getsockopt(struct socket *sock, int le= vel, int optname, if (level !=3D SOL_XDP) return -ENOPROTOOPT; =20 - if (get_user(len, optlen)) - return -EFAULT; + len =3D opt->optlen; if (len < 0) return -EINVAL; =20 @@ -1773,10 +1773,10 @@ static int xsk_getsockopt(struct socket *sock, int = level, int optname, stats.tx_invalid_descs =3D xskq_nb_invalid_descs(xs->tx); mutex_unlock(&xs->mutex); =20 - if (copy_to_user(optval, &stats, stats_size)) - return -EFAULT; - if (put_user(stats_size, optlen)) + if (copy_to_iter(&stats, stats_size, &opt->iter_out) !=3D + stats_size) return -EFAULT; + opt->optlen =3D stats_size; =20 return 0; } @@ -1825,10 +1825,9 @@ static int xsk_getsockopt(struct socket *sock, int l= evel, int optname, to_copy =3D &off_v1; } =20 - if (copy_to_user(optval, to_copy, len)) - return -EFAULT; - if (put_user(len, optlen)) + if (copy_to_iter(to_copy, len, &opt->iter_out) !=3D len) return -EFAULT; + opt->optlen =3D len; =20 return 0; } @@ -1845,10 +1844,9 @@ static int xsk_getsockopt(struct socket *sock, int l= evel, int optname, mutex_unlock(&xs->mutex); =20 len =3D sizeof(opts); - if (copy_to_user(optval, &opts, len)) - return -EFAULT; - if (put_user(len, optlen)) + if (copy_to_iter(&opts, len, &opt->iter_out) !=3D len) return -EFAULT; + opt->optlen =3D len; =20 return 0; } @@ -1949,7 +1947,7 @@ static const struct proto_ops xsk_proto_ops =3D { .listen =3D sock_no_listen, .shutdown =3D sock_no_shutdown, .setsockopt =3D xsk_setsockopt, - .getsockopt =3D xsk_getsockopt, + .getsockopt_iter =3D xsk_getsockopt, .sendmsg =3D xsk_sendmsg, .recvmsg =3D xsk_recvmsg, .mmap =3D xsk_mmap, --=20 2.53.0-Meta From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14CCB428821; Wed, 13 May 2026 12:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675703; cv=none; b=oozw0zaOmTF2UrfwHrjrB0EMgXL/FcIF++CEbicb9nECkB8v5cBT7ZLcikBRVZg/vZUZggMOwBFSZMPST1ee7KsAQ0tGee82fXSwznfr5Gx8HA/J1qcqWoa3k+6St5QdLwbzioMWjbnqkgSk+ZWXpEKhrpLDF/4QVRt36uMId2k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675703; c=relaxed/simple; bh=Fr+0wmjHlF79em7QD3yyoUyusFO+aw9/+aA1oi3mVTM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ncF/UlCVk8DRdCvw3DxyRDS2U1F9OzlRPafPcHNr4m3dP3GZHZHAqpsJ6ZyyCsgFbBnDVurBIMjThgBTmQEeryKDvwSWhBFQBJkPeVK50nrpo7Johnl8bx2I17kL6STBBTfTeSNQNQjjp+U14bUMTwXTI5LQUHD0nuo3IFnb1/M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=Ru3PuHEs; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="Ru3PuHEs" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=2WMPuApTHPuVLLw+lzkepvgCjK8SwBMKbbLMEPuDxpo=; b=Ru3PuHEsdj61Wv3bybbJCOUyRJ Of2+eYBmmDEI/XbkbfuHLFIwkCSDJMmfcDfBcX9Vs9Vg7m6z+vr0G8U6ZYcRNcF3MHpU2RYw7PvXL D/28CO9x9z9oF3yfh7EWmv31gCBnKicfqWHATO3PDNXqPkIDCanadY3yShAJyNeLPMJ751yqzz+yy lYTZ6xlbUmfY135+mb/RAOngbazxNdINioDIk9ZM2i1TNCF7sGB25bRCJmCnOvtYzUeW5fS8Zn/vL BkONJhnKw7XZBLhvwme5F3bogjhZc70R8E+zbPvrZ+/QzJ6MUVVXsUH+1O7xjZ9PhZ6WUrhQVxMCU C1tX7mJw==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8nb-003A8M-10; Wed, 13 May 2026 12:34:51 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:14 -0700 Subject: [PATCH net-next 3/6] af_iucv: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-3-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=2137; i=leitao@debian.org; h=from:subject:message-id; bh=Fr+0wmjHlF79em7QD3yyoUyusFO+aw9/+aA1oi3mVTM=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/Po5/1i6RhWkIFNZRER12k/7yJVu0+bsNu1 1GxS8VLtQuJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 beylD/9Viop+R7QCfyllsFEtw2FvAbAusw52xe9pcfIVnghXfL/+Wt/au1wpIR2WRndXi7hRoAZ fsguRFGA1slFHLP+3OaNSpiqA6nnITQxx08x3jR7dp+wPnI3inntY9+zq4EySzFbJupvEwXzcF+ KkYoUNItO7itUmwqvAKAxoHzYFqG+9zwZtvYZ7OdhIzMwZaFZfBB1O4LmmAPguQ8QpP/qm9AIeB 1BcVWUmV8WDlY5Y8xTK29GAHV1Xs22K5e/Z1BRA/M8HVu8+dZFnk56Q8GcUf0nORK9j0ao7ZdUT eC/HJCZMQc0Yz1hh623QQCLT9K9w6Xe1os/yAiCPGG0Kn5zqb+Ag/uvT/ZvRoklFU1iRu6q04Aq 1Ieh4GjiAv8zKAxITbDG6USNYHYh1jbwASohFV+VL8O3ZvCY8eob5yXIjTxlhOvIIRRZVvHu+YS rqnoGpEZn3ktjKhsPRs0edIxRfU0itGM/DQyCBvSzxjVXhrj+000vHOgNJ3JgjnLZqN4oC14lk+ XaLamQ0OWyphgrWnMVHJsOlf8dEwXwIK2+dehzOfnH0CdUcHBaNo/kWf2lj2wpEUMXtr5Fl4EYE fdzjdaqF62pVaG/QOEwoFQ/4F0OMP55QX3+V+Yz7GnymKvOzSFjxMbbjHeLHUTUwlAnRrzKnItv N8QZKT/4BKp/IrQ== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Convert IUCV 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 Acked-by: Stanislav Fomichev --- net/iucv/af_iucv.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index 72dfccd4e3d58..7a5ce93a83d9c 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -1535,7 +1536,7 @@ static int iucv_sock_setsockopt(struct socket *sock, = int level, int optname, } =20 static int iucv_sock_getsockopt(struct socket *sock, int level, int optnam= e, - char __user *optval, int __user *optlen) + sockopt_t *opt) { struct sock *sk =3D sock->sk; struct iucv_sock *iucv =3D iucv_sk(sk); @@ -1545,9 +1546,7 @@ static int iucv_sock_getsockopt(struct socket *sock, = int level, int optname, if (level !=3D SOL_IUCV) return -ENOPROTOOPT; =20 - if (get_user(len, optlen)) - return -EFAULT; - + len =3D opt->optlen; if (len < 0) return -EINVAL; =20 @@ -1574,9 +1573,8 @@ static int iucv_sock_getsockopt(struct socket *sock, = int level, int optname, return -ENOPROTOOPT; } =20 - if (put_user(len, optlen)) - return -EFAULT; - if (copy_to_user(optval, &val, len)) + opt->optlen =3D len; + if (copy_to_iter(&val, len, &opt->iter_out) !=3D len) return -EFAULT; =20 return 0; @@ -2228,7 +2226,7 @@ static const struct proto_ops iucv_sock_ops =3D { .socketpair =3D sock_no_socketpair, .shutdown =3D iucv_sock_shutdown, .setsockopt =3D iucv_sock_setsockopt, - .getsockopt =3D iucv_sock_getsockopt, + .getsockopt_iter =3D iucv_sock_getsockopt, }; =20 static int iucv_sock_create(struct net *net, struct socket *sock, int prot= ocol, --=20 2.53.0-Meta From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB83A41C30A; Wed, 13 May 2026 12:35:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675715; cv=none; b=RUBngss4X3jyerqp1I3NHo+nwcLHaNjFV3fTstYlr3APuoXcfFxQI1u+ZEoxQ2eGx3ShSWGYLiZFGLcaQDMmapb5YMzSplwD+kMwVtiU1+8pYtNsglm5FgPDNSN8M6RUssdfudExRataMDU8vtKpsrLERuXETZLa+5PtePlb6Kc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675715; c=relaxed/simple; bh=/ifnZ+R/m/l4sS+35vtlLiYTDUDaOuXzlwMquGGtep0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SS2dCnzkVwW6MWPo/y/mexVmA5/MvfnG3yD69+nnztzFgWs8zHX3C+RzwoAUUwJXPjM6j0IsskrkP1zxlXGTflsPaHuS0AcwV19rkgBgQcAG8mLqJRUQ6P7B/eo4nE97kX1IwBxX6DwrJg/r2HsQfBmgWX/MlMasCp5s4ibAX/E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=O4gPHsEg; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="O4gPHsEg" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=rFPiwC2zxGv1gubkilKgGFfkbSf1GmG2sq5wGP6WhaI=; b=O4gPHsEgRyeo6n3qRfo/eW+SQu qjAzHVwuHmqFiH3FuytMJrDBjQuT9QPWDpd7KR4wkpgaSF2zLwnj5sE3ZRytYRKjcHKRLXAkCbT3n Jm7LlxS3oY1SpyFXTXlVDYDTaykOUvat+JogRq84uW1IP9/qLtWs9sdRpFswLEv73hLrJDE7MjtQ/ Mh8+zw7o57ph7nnVDoe1j3YX+zzaH8x3QW+qMw0VxktKQdM+N/h/dWRMjcPCiet8LN3raoRlfh34S gzV78v61Vuh/UvwPQCYfrlu7qzt/dZOx+mkZAVhxfenQm05we5XhQdNXBMqYatVvbVLLyH1VjDUje le5HjOgQ==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8nh-003A8f-36; Wed, 13 May 2026 12:34:58 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:15 -0700 Subject: [PATCH net-next 4/6] l2tp: ppp: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-4-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=2205; i=leitao@debian.org; h=from:subject:message-id; bh=/ifnZ+R/m/l4sS+35vtlLiYTDUDaOuXzlwMquGGtep0=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/PzrXZt6ARFDTQtGmOtRsdKAww4WTLwGhQe 8/4AS+wIIGJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 bROGD/wJLDsiBeFZIBM7asusZwiEQcnGlYBQmtNbrgkbL37oksylpvNxnPl29ugy41kgPwISprg jdHR1oMxv6XqUxx4m3K4gyUipmUTObYqZYxKtPg1a8VkRBC2wa3y2nd2kKQ1k++m7FMfni8zYe1 yyD82EORRQChny2uLbZlG1jS31qmFnLIkS81LhhiaJYDr7sYN5VbA5hW5kNIfP6Gf60NInZtztX qBfvXgu49oyYIOoPqnDQihwgCCED6m5iy8PQMkxLRrAtps4akkHQ8MQ/w6G3I4VMzsB1Xhe4+U5 TX0IHsHPlFHLwFMy9TSQJelrXq/BebVdNLcijPv95nTiwjIlvZRyPv3AkQ5BlOjPoBqflIpqveB l657SjPCRNOpf6EpMdBn4Pwgtgtkn6WFhu7/QQ5grUWmjv48tr1FHXjqQtew4fZ13ND7ubJa6tw j6+wY1ocD87fLPGscC6EgZ+q3AHVv9Y2Ct7Urcl0cNJ7TZVqaXde2Q8tJyr5ek31B4u9sNcHBKh QcM92xS/u6mhL6NOCk+q84v+x2Jmcg/ylO74mO86Rgx7biwA01aLeKE1RlNVQ8oF8uzXX1wCnc8 D6bWlxyrKKLyTtJybhYxsAQMm3x19w3WIKAEUmHAqg02tAb4XVgz3CWk2AvKfmIGr8H1CxUqWTs Afab7cEsL+7P9rg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao 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 Acked-by: Stanislav Fomichev --- 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 #include #include +#include =20 #include #include @@ -1317,7 +1318,7 @@ static int pppol2tp_session_getsockopt(struct sock *s= k, * 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 =3D sock->sk; struct l2tp_session *session; @@ -1328,9 +1329,7 @@ static int pppol2tp_getsockopt(struct socket *sock, i= nt level, int optname, if (level !=3D SOL_PPPOL2TP) return -EINVAL; =20 - if (get_user(len, optlen)) - return -EFAULT; - + len =3D opt->optlen; if (len < 0) return -EINVAL; =20 @@ -1358,12 +1357,11 @@ static int pppol2tp_getsockopt(struct socket *sock,= int level, int optname, goto end_put_sess; } =20 - err =3D -EFAULT; - if (put_user(len, optlen)) - goto end_put_sess; - - if (copy_to_user((void __user *)optval, &val, len)) + opt->optlen =3D len; + if (copy_to_iter(&val, len, &opt->iter_out) !=3D len) { + err =3D -EFAULT; goto end_put_sess; + } =20 err =3D 0; =20 @@ -1634,7 +1632,7 @@ static const struct proto_ops pppol2tp_ops =3D { .listen =3D sock_no_listen, .shutdown =3D sock_no_shutdown, .setsockopt =3D pppol2tp_setsockopt, - .getsockopt =3D pppol2tp_getsockopt, + .getsockopt_iter =3D pppol2tp_getsockopt, .sendmsg =3D pppol2tp_sendmsg, .recvmsg =3D pppol2tp_recvmsg, .mmap =3D sock_no_mmap, --=20 2.53.0-Meta From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D076241325E; Wed, 13 May 2026 12:35:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675718; cv=none; b=NJ6sE2MOSkVpL1y5o6esubRBRFN4wO5//v++B+EU/aIUNYSGfzSD9mtdrGkvLsJO/phqzDZRVw8Jdpyz1HiqDLQqtmqAdKIZfCgoJ23FpRwbxKEzuOB4WB5hTUigDppt3YFwOCTeQTrDsq8/sBCuvwo2rtQHSwiitl/p2DlG1Kk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675718; c=relaxed/simple; bh=p7hVaV8xjsARf4k51QHECRVcUobZRQWqSnhvJ1q8neU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hw00C8ZVY+6GwgEj066QARLUEgvf7OwCNvtt3Ar0SW31r9T2OEEB9lD3QjLY5+PvmTh63jT2vEr3rvV9v6Pj9YBwTrtpKq8uGC3HKb/LgQR83vqRdIOWFxy8ocgZCkSjMy+mEsW9bPZBPZug0+zf37heOu8SZH/L6Kr/tUuhPaA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=nfpRbGxC; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="nfpRbGxC" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=CbxXvLiw4sMVhAzVlRt5P+d5WLtKTwA9XSCvlNZA1Rs=; b=nfpRbGxCv8GEhRlEwR+Vd6qUbC JIwYV6TILystoxG5lZ/+NMY4hWrcLh5cbzapdccPjCdevkzPiVfkjF80tGpx2s6XQbz1dpYmJ32Sm yRTPhTYX3HYw5IwrTaFilX2spMeVhQLbZV7uyMdaJFmOfzddXvm0MRZIoTw4s2RuKgk5heQt4od9H 4cVAJkAkmTWLjvUmtDCPLoc1IC4qNyEx77rsSFuws7qhoqkt4Eo+hvSPUyF3tOKF3oxqokHy4affE Lp+F+ExnGo+10qoW95ICP9IZrcMtkB+lIAyjs8NiF/m5d8vu776BXam/pH68jDMMry+BdUQlz4K1b FdsMaEQg==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8no-003A8x-1M; Wed, 13 May 2026 12:35:04 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:16 -0700 Subject: [PATCH net-next 5/6] rxrpc: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-5-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=2054; i=leitao@debian.org; h=from:subject:message-id; bh=p7hVaV8xjsARf4k51QHECRVcUobZRQWqSnhvJ1q8neU=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/PRvKzbSTKV5V3M+lVEf2nLgN2t4cbBxM1P wtB5IazTwyJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 bXGdEACN1LRwNTQ0Y5/t2FF3/QkPQ1n/dPc1L2cE3D/ihieD973VI3SHKyiFRjZwG7h+i3AalJw sah8qDgszZ9wvmpaN6nnf8h7GTEEfi4jRSzVDjeInLa5Ax5nxtPKq8KzJptn1xE8qf1xpIOD5Vx x1yk13F4dzS73ijTwRx9FZXUs74HatC6TW5qg6s2Ewe/fgQlvVJPaXGZu4CizZIgEhOCGBgl0+y kVjoScnA6V+wYefhVIachPYJRD0HxtUEnX+IOmw8bzRxbpC3bMbnIj28rTnqF0Wwt3MVFmOBGXm 5GrWMOU42miJFUdcXipCl4zoafoQCNNZA7ukDcWXknZhCLzxN03waGzteTNA0Xz/AApStw6quUx 5QPvMoTvqhgJkft2Vy8NNy+7wDKfhE86aeYkMLDQeB5FmyAbnWewFa2ZjpsKRQWK2HckKlVtPU1 IM0O8VR0Ud7aRENJu0kk1eSiADYy/oiML14z7qpo9Fu5jqqYdQ3zlW7sM6hdnPVWL02XYvGSN9d tLd1300fuVbxxN+sQc6tb+qibJX2nmnlfYtXn7Ao0SDVn0/n1HpOgVNI2VJO8pauH7PSYpEwmuI aGKVJx1Vo6xZ9e5F74zQx3f6QmCysLDlM3in6ZHYLl/wnzSc6AtB89dH0257FW8mCMI2OmRPsAG YGBtj5OWc4kdn0g== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Convert RxRPC 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 Acked-by: Stanislav Fomichev --- net/rxrpc/af_rxrpc.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index 32ec91fa938fb..9ab0f22c881ec 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -743,23 +744,24 @@ static int rxrpc_setsockopt(struct socket *sock, int = level, int optname, * Get socket options. */ static int rxrpc_getsockopt(struct socket *sock, int level, int optname, - char __user *optval, int __user *_optlen) + sockopt_t *opt) { - int optlen; + int optlen, val; =20 if (level !=3D SOL_RXRPC) return -EOPNOTSUPP; =20 - if (get_user(optlen, _optlen)) - return -EFAULT; + optlen =3D opt->optlen; =20 switch (optname) { case RXRPC_SUPPORTED_CMSG: if (optlen < sizeof(int)) return -ETOOSMALL; - if (put_user(RXRPC__SUPPORTED - 1, (int __user *)optval) || - put_user(sizeof(int), _optlen)) + val =3D RXRPC__SUPPORTED - 1; + if (copy_to_iter(&val, sizeof(val), &opt->iter_out) !=3D + sizeof(val)) return -EFAULT; + opt->optlen =3D sizeof(val); return 0; =20 default: @@ -1009,7 +1011,7 @@ static const struct proto_ops rxrpc_rpc_ops =3D { .listen =3D rxrpc_listen, .shutdown =3D rxrpc_shutdown, .setsockopt =3D rxrpc_setsockopt, - .getsockopt =3D rxrpc_getsockopt, + .getsockopt_iter =3D rxrpc_getsockopt, .sendmsg =3D rxrpc_sendmsg, .recvmsg =3D rxrpc_recvmsg, .mmap =3D sock_no_mmap, --=20 2.53.0-Meta From nobody Fri Jun 12 18:34:16 2026 Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E7AB3441036; Wed, 13 May 2026 12:35:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675724; cv=none; b=SUE+XkxNnJSW7SB10IW6YC/VKhWQavMqr1Kf1zlb4JUrAMD+WELN3lXtzIWqEBg9OoXd+iI0uTnIBLti9vpZ1lcfkRQZDPUxtFja9HmuoXhYIP6uMo+uUp67Ym+oBY8QR832EKcVthwP/uo4S1/pdq0tgqDs4upZSe+4aayBrzM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778675724; c=relaxed/simple; bh=Z0ETmeAmKPYR2VU1YRxV60q6d9tmgqfaakc7JmmhaPQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EqVSmH+NsnVPs6I5wHKAB1Z//DREnFHq4r6Lb3q4eKRPoRguP7P57qi+aE1E+BM6ZVgu17gkI050Lx0oZ78AswXj6HGjzW37qizo4ogZ6xMt6VjW73xbhpoIR8rNaAx6iRDTXSVFt38XvomgHMNQiz+ulh0QDkz3iK0+gxqMMkE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=T7mBH6Gh; arc=none smtp.client-ip=82.195.75.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=debian.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="T7mBH6Gh" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; s=smtpauto.stravinsky; h=X-Debian-User:Cc:To:In-Reply-To:References: Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description; bh=W5I1vZx+Y2S9t7G7jWTlUs8gZMOuYDWt7ZsUgVBeDbg=; b=T7mBH6Gh4BDscnqfAuLtKoAzbB jax6nMGR60umeuA4US3h5Dwg1fT8IWVwiRbkvriHN21Rrhx8ozZ2s+/VJOUrgfmB7mdCprEnX3/9M JTL119BUsM4jZGbaoYODnWlGSKx0rWjjNFHVgb8y8ckcNEhGQZ1KghbknAmwWy4eeO3YH9/NuBFnY AQg2LrRjj+0tRDVw+8j/WWLzlRy2j45Gf2ldxn05ORsPA53843cDiz4386jTE8AYwMbbtXAyq/bWL uig27L9cbfP/8jfOnf+SnwyJYEvi3qwCfDezPsJL0uZUVFaUxh038s/liJOYa/ce24JxEtaFgOfMC Lnj/72uw==; Received: from authenticated user by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1wN8nv-003A9V-08; Wed, 13 May 2026 12:35:11 +0000 From: Breno Leitao Date: Wed, 13 May 2026 05:34:17 -0700 Subject: [PATCH net-next 6/6] tipc: convert to getsockopt_iter Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260513-getsock_four-v1-6-fe7f0e756fac@debian.org> References: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> In-Reply-To: <20260513-getsock_four-v1-0-fe7f0e756fac@debian.org> To: Chas Williams <3chas3@gmail.com>, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Jon Maloy , Alexandra Winter , Thorsten Winkler , James Chapman , David Howells , Marc Dionne , David Heidelberg , Samuel Ortiz Cc: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, tipc-discussion@lists.sourceforge.net, linux-s390@vger.kernel.org, linux-afs@lists.infradead.org, oe-linux-nfc@lists.linux.dev, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=3995; i=leitao@debian.org; h=from:subject:message-id; bh=Z0ETmeAmKPYR2VU1YRxV60q6d9tmgqfaakc7JmmhaPQ=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBG/PaowN1KvCyr8CcTiJ0E7AwR2awXsEDIGLM nLu04vGNlGJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagRvzwAKCRA1o5Of/Hh3 bXNnD/0WM/D4XEOrsBMsAMLIfbsjBaNjvSj5/1ayamyCAhAAjDJWsHn3OLW6rXZBtOIEc72WVql GyutItuq0vfeobIoCrimQ3IJCHyyrZzUCNug7lUBhmbtUmMLUk5hEAE9SKM9UfrtWRbuJzGapgS 0txO61a8vXUL33bcXfn+uT0emCvUDooT7DpOknLT8bttYQWeNyrfUAkZwOJ8vPjA9HGpkiV7rHG 19DuOnjyX2/gvEuhhfVrFCfLts3cv/KYL5WYldgX3CovsTcz+rjfcxzDOd4waTvcSyZjxWDTeam ep1Iu6adQRosYK7BzRTJwxvUafsqrsflbe+cLalIlIUziTxilyBD2VmPBPSoeNNvKHtZc1gG2LY PUOrTZl9tqF21Tqvm4fqFrHfa01/jQ9Jw+v4lEr24f1VCClSw8EOA6SDog+/xG44cMPXiKjdVoU iRuuRBt2IQMElbmw9ULN8FlNYWZi5xj/Ib5TA+TCaiOlnvhdh4xorjvn41uofINk0zOYebGUHPx 4YmSOjcukete1BJKckqG+QUrWZRuDK/zoP+bgb2Sk6xXcKwnlPmNilVjHqRXN/TYXmjxeJ3b3hg otzeihi/dlrbkPnF1Qsfcx2WA8PopJkIcEqZjJhzuWpdldua+d4fJuY7ZW87LSfM32ZlrPjvjyU V770VioEJZ26fEg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Convert TIPC sockets (msg, packet, stream proto_ops) to use the new getsockopt_iter callback with sockopt_t. Key changes: - Replace (char __user *optval, int __user *optlen) with sockopt_t *sopt - Use sopt->optlen for buffer length (input) and returned size (output) - Use copy_to_iter() instead of put_user()/copy_to_user() The sockopt_t parameter is named sopt to avoid collision with the existing optname parameter named opt. Note: Dropped the unnecessary parentheses to make checkpatch happier. Signed-off-by: Breno Leitao Acked-by: Stanislav Fomichev --- net/tipc/socket.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 9329919fb07f0..858aa6e9566d7 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -37,6 +37,7 @@ =20 #include #include +#include #include =20 #include "core.h" @@ -3220,8 +3221,7 @@ static int tipc_setsockopt(struct socket *sock, int l= vl, int opt, * @sock: socket structure * @lvl: option level * @opt: option identifier - * @ov: receptacle for option value - * @ol: receptacle for length of option value + * @sopt: socket option container (input buffer length, output value/lengt= h) * * For stream sockets only, returns 0 length result for all IPPROTO_TCP op= tions * (to ease compatibility). @@ -3229,22 +3229,22 @@ static int tipc_setsockopt(struct socket *sock, int= lvl, int opt, * Return: 0 on success, errno otherwise */ static int tipc_getsockopt(struct socket *sock, int lvl, int opt, - char __user *ov, int __user *ol) + sockopt_t *sopt) { struct sock *sk =3D sock->sk; struct tipc_sock *tsk =3D tipc_sk(sk); struct tipc_service_range seq; int len, scope; + int res =3D 0; u32 value; - int res; =20 - if ((lvl =3D=3D IPPROTO_TCP) && (sock->type =3D=3D SOCK_STREAM)) - return put_user(0, ol); + if (lvl =3D=3D IPPROTO_TCP && sock->type =3D=3D SOCK_STREAM) { + sopt->optlen =3D 0; + return 0; + } if (lvl !=3D SOL_TIPC) return -ENOPROTOOPT; - res =3D get_user(len, ol); - if (res) - return res; + len =3D sopt->optlen; =20 lock_sock(sk); =20 @@ -3260,7 +3260,6 @@ static int tipc_getsockopt(struct socket *sock, int l= vl, int opt, break; case TIPC_CONN_TIMEOUT: value =3D tsk->conn_timeout; - /* no need to set "res", since already 0 at this point */ break; case TIPC_NODE_RECVQ_DEPTH: value =3D 0; /* was tipc_queue_size, now obsolete */ @@ -3289,10 +3288,12 @@ static int tipc_getsockopt(struct socket *sock, int= lvl, int opt, if (len < sizeof(value)) return -EINVAL; =20 - if (copy_to_user(ov, &value, sizeof(value))) + if (copy_to_iter(&value, sizeof(value), &sopt->iter_out) !=3D + sizeof(value)) return -EFAULT; + sopt->optlen =3D sizeof(value); =20 - return put_user(sizeof(value), ol); + return 0; } =20 static int tipc_ioctl(struct socket *sock, unsigned int cmd, unsigned long= arg) @@ -3365,7 +3366,7 @@ static const struct proto_ops msg_ops =3D { .listen =3D sock_no_listen, .shutdown =3D tipc_shutdown, .setsockopt =3D tipc_setsockopt, - .getsockopt =3D tipc_getsockopt, + .getsockopt_iter =3D tipc_getsockopt, .sendmsg =3D tipc_sendmsg, .recvmsg =3D tipc_recvmsg, .mmap =3D sock_no_mmap, @@ -3385,7 +3386,7 @@ static const struct proto_ops packet_ops =3D { .listen =3D tipc_listen, .shutdown =3D tipc_shutdown, .setsockopt =3D tipc_setsockopt, - .getsockopt =3D tipc_getsockopt, + .getsockopt_iter =3D tipc_getsockopt, .sendmsg =3D tipc_send_packet, .recvmsg =3D tipc_recvmsg, .mmap =3D sock_no_mmap, @@ -3405,7 +3406,7 @@ static const struct proto_ops stream_ops =3D { .listen =3D tipc_listen, .shutdown =3D tipc_shutdown, .setsockopt =3D tipc_setsockopt, - .getsockopt =3D tipc_getsockopt, + .getsockopt_iter =3D tipc_getsockopt, .sendmsg =3D tipc_sendstream, .recvmsg =3D tipc_recvstream, .mmap =3D sock_no_mmap, --=20 2.53.0-Meta