From nobody Sun May 24 22:42:31 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 F2A8D36EAB8; Wed, 20 May 2026 16:54:10 +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=1779296052; cv=none; b=khHs4kEu0YmjuCwcPXnJUgzEf2OOqbYhm3lAPPAoRHgS+zAWBUoO5UG1E7J/uW1oObfqW5N2eW4u7wGU6TLaiNdKIDYGZnmN5JSszb6Y/opuW1QpBP2fac+iMvMGQeJKQPchec9PtFnXnIO6+Nr5OwreetdF1NYL/gWauRFUgOI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296052; c=relaxed/simple; bh=ds7repM3GfKwVCPTBlPEylK0lJdlV0G4PW0g4dlpb7s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kcN6rUDQcME9jHQFjJw92KjFKYAudJsp5tYKT3ZQCscDzYBJcpmBavKH7P/cbvrPjRTcrhYhO12XthK64WjAVjiSXV1v14J6v3ci6+T4s5+WXvMkg05rmEtXiEh6Tdao2Joeu7A+BgaVVd/MTiLWKskQTiLyHl44V/91ggxmj+8= 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=Bab0XAEx; 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="Bab0XAEx" 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=RmTWKkI25NL3IXqet/TO14Ipdwn0wvG7RqPRb5B1yow=; b=Bab0XAExiaVZYb+r9CLBwOBIP5 KOpTPU9tITd9DjvGTLc0/2PINH0gpP6ZOmswzLZWZXc68RkzR5j4MFzmGVWCEnoRtGu3K0XsWlfuo iEIFuyUYznklM27mIsD/gGI3djk9MD2uufCFqRhgcd8c+ApFqhbcYuIstF/kriDkOvBgYnB9a4VQO 36KKusRlCDLI9z8wyqn4b8PuskypkxirCLJLSXwdC2LWrazfqvg0Ez/vrfzR/ibtydENRhd0ASRdK F0bkt2XvnpaIelo6LgsIdjQCu3sDMsMcOxqAQYPoC/S3iNNkVs3bieBTNp8bUAiKS4qtzUeYkSIHc YVyQUI3A==; 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 1wPkBJ-003FU4-0R; Wed, 20 May 2026 16:54:05 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:46 -0700 Subject: [PATCH net-next v3 1/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: <20260520-getsock_four-v3-1-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=2237; i=leitao@debian.org; h=from:subject:message-id; bh=ds7repM3GfKwVCPTBlPEylK0lJdlV0G4PW0g4dlpb7s=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecglSm/Ml6ui8cpJo0v971RFRvnBd6ciGV11 gP+Dv3wZxCJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bZoPEACj7pGZCLMLbi1Jdd6AHwyq10MyPXuvbpuYvIBVGP4qkeil7AjegGTlYq5fhgxoaPOL1ms iz5/9DSx8aibMHAKcy+CEi6lvViPcWe7f6lZNH/vtovjc9cctfMoongt7jvR+8gUJ9dJQhNtoYO FXG+m9cGRR4reIlO7Cx1chLsLJ2C4ah3k9CWFOQgcJOhiXHVNRt0KyNiZq7XQK3xXwl1vqLqIoX OMYdCyYMnfbv2qhOmsSDBGjt+CZodyhY4+Dqjp6P+UmsLgaSP4ASeW56nZd6cASLk1yhi2HkETl w1o8s46idAZg5IXb0xP8a3ekmutyKxu8EbA3OPUB8HBPYXGAzjHsuIRnmjrIpKODXc45QMIVOtb +JYCIJRNxcKWBSGcW3EAjnSErwJBfyxa4PBT5zAcJKtwSeODfSwohIB6zo4W6GNO20Rf5m88doB ntkkPtwDOyO+346aA7M2EKY2WKQvQk/MD+82+BFNwZJoEegPhBaL690rmHvKuj24FHBLxER3V47 fu0zYv0FRRbHc18FLVlcEJk+Xwaub+DiOW0RbgXzGUpffc97NuWDupgpgfEcXWqU7RkQr+rqEUR qhU94w6p/KqKZsKOVe1GHjOKa7ZyS+aS96d9c7sYMP6pvFLCQjr5KoaKQbb6Qp3TIWXa8ZdmlAu RSbA3vF7D9rAZhQ== 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() Acked-by: Stanislav Fomichev Acked-by: Alexandra Winter Signed-off-by: Breno Leitao --- 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 Sun May 24 22:42:31 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 534FF3A3833; Wed, 20 May 2026 16:54:17 +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=1779296058; cv=none; b=DRkoEyuERu1TPgxL/W2le4e6UxgRzPAf+/Z73zOcYG9D1hg4dStcyu/fddsCR3erCTV4qoLACL5Y6Payn+/zVb3aEYY+5/W+cgTK4VbMzm1ytg+N7DsLbEK1deo3ZDrI7X7SmKs3DR1+dMYI9sj4WL7gw5XIfTgsJi5S+7V4rj4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296058; c=relaxed/simple; bh=7l+w+wAHbKIY6oUNofPuNKiOa09kSTq+kbLkWSY/nls=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ITMucSwhGoscpKFl+pMuZDquV94Qm0JOaVg/xFVJTRWVOKT+b4Wm4wMh6UfZreHqWpL5o35+lpY1vkKc7oR91q+5QEKdvodatOIQpPKNgOfI8ozLxWqN6EzoMr4O/GjsBwPpEOGkKlZlJtSGRH7OeZ33dOZw8RwErmsFl3c34lg= 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=VDQdHEIQ; 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="VDQdHEIQ" 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=Ptm+lhG+ow6TJjPimxQw3wswK8UCGdIIvOov5LodgH0=; b=VDQdHEIQcIuzZB+CTi3f4vMnr+ tMe6vicn6xweGWJztFnMcXQ30qO4/ztgXj/tTPEXcvJIZfF++SySTh2bGubTddWExgvW0DffMRdRp aW8HlRvW593io6gDO0JmrEFvoCiHSPczR341N/zcrRbr/kP54W9ZdSPy2X9Egfy7J5x6gKKQcAMEk qG1vMXDbKsIeWl+ldUPG9hX5674L1gJT86Ngt6uidLTcPOiu4SeD4mONYFoxkO+3IhopvJVVf7UNC z9m7XTK58nQ9QKBsLGsXySFAIbYsP7A7hXnwb80giryot3gTmJhTDMIvJN6bHZsrcbv/2S0gBMoNh KOFhGSkw==; 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 1wPkBP-003FUE-1t; Wed, 20 May 2026 16:54:11 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:47 -0700 Subject: [PATCH net-next v3 2/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: <20260520-getsock_four-v3-2-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=5577; i=leitao@debian.org; h=from:subject:message-id; bh=7l+w+wAHbKIY6oUNofPuNKiOa09kSTq+kbLkWSY/nls=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecgDyOylxAhdojD2pQ5yeusXKyTkiSM74p0T YSDXeQTXuKJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bQJID/4grFELZuj5tuz2bZx3GTfJ8BTo4DORVc199/4cNThITGE25gYomss+iVQv6yye6P4fzKA UsKJtMusG9udt4gi63IdueBOLnveH0p/OD8C+Xa7sxUPfq0UitlrA0QBpDlKl6dHVblxvC7SDE6 6fVyYBR7VLgeo7oS2O0tCBtRseAqip1hOzk8MS45//8SO15EvxKWj6BxWNMalf4m4dcIO94zaXD Cs8G4aTImCW6QAtVdYFBqmIAfXLEfp9D4hTlQH1wr9OcE4HR71EnIaCzzinJGdaC2jpWnGC/5zp pEorYd3Qj/RBu6aPAgCNrzf5rnoBWMpcw7tKoO9oqcUN+gylkU0hXKZ1stPG/dBIaVSq80am+tY sAwe8uzA0bjVCo03mAnJf13EUrSJMIR2CYDGqfrFtoQ6Hcqa2G04fe5wwtYSnfXQSuNYKHAUUvC YTlLa/kRHkuHHOBV6xT8h++v3KshWlkvYrDLMZZqbkduIVU69qZFsjWQCiKFi23vZUOIu9SutZh jItt1b22jyVJxfA7N6SnRYw3uJJ6rUbljzhm1f1j2UgY8Xc/ThNjslPAWp7kiv8jjd9mkApIaL0 IMD8WHoz3B2q+nzfgh2NarQGsR8FpHYMes/Gqt/Zl52F8mLGZ5XTo2kHjT5/0qQ/zKvGCYicRT4 4RRA1kA+O8Oy4UA== 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() Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- 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..60132de4eebe1 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; + int 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 Sun May 24 22:42:31 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 38E323EFFB8; Wed, 20 May 2026 16:54:24 +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=1779296065; cv=none; b=qjq2YxXWlf0D/gDitwfmadPkLJKmKCS6EP4wXCHPcvsutCl2Sm/pJ9dWcnisf79Kf3f1AkH0V0EcnnR7td7YzuXBm+oNw0HOBbRfoulZSt7GvTqJzJQIxnPOi2emePGfpfyjy0BI4HYr3cFXl+WTRhAfeCUPH63afgx/kQaEl2k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296065; c=relaxed/simple; bh=mLjMS8AXXQWWpHQvJDt9wZGN1YLyFgu0AP5yDHz+tM8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c2GDpMYRVbJRp5HFMdr1UwMVuKHBio7muHPebUpFLiL9Bi+tqEEM9h/26c7anz20BBbsCGei1nOQ40q6hJq7uWQOzdCoXX6g3S8EQ5PURwyHz9STEyawVk8pxewoMscKcnUt9GQgx6ECV2rWJC7KeYpBac63sEtateZMlGsTdEY= 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=HBwislMY; 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="HBwislMY" 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=6WroK2SRMCzSY7s1w6oOlAckh2hz3l6QOa4ze9nZxOw=; b=HBwislMYy1s1MyZ53qjcozEOLa l9cAWhUX5MiCrsRL5uruJLtxuukR80dSRBFOZ/NcNVOpyQ0mTaqDFCaOxLs1bJnb5cqVo1Dscqy25 p7FiHcwe4vs/r/M36hRlXpNG0QFuMuZW1jVShyy+5BEGdb+ueUSFQbkSCg28C2GZH95Uo0F1ttorw PGPyLqWl7MInXByrvC6h/lAuDsZ39igjt3fDyDim3GI91BvnBl9RV5udaw2GJXLXwVOkAR4zqkdpn 2mDKslOtYUrWn/WLp2+LW3J949dTa0JT2OWBR1BmHsOyRzlOwBzpOtVsYidrr/X0VYRXd10jBhzjI cKXrlWMA==; 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 1wPkBV-003FUP-2e; Wed, 20 May 2026 16:54:18 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:48 -0700 Subject: [PATCH net-next v3 3/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: <20260520-getsock_four-v3-3-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=2887; i=leitao@debian.org; h=from:subject:message-id; bh=mLjMS8AXXQWWpHQvJDt9wZGN1YLyFgu0AP5yDHz+tM8=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecgXjiP1TkOVmDJD8ZjbIEnrdnVvPD7RLrAb a3RjVaydaWJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bXZwEACvb+c8YkS/0uBY55FDkcVfawDaxZ8nOCoxKXlfiabxoHwUymOhfeUimemAN8DTi28VPA/ h8r69WY957GKkoRQglgZf2YlGDplzHgAHAsrr8u+9kcFzO2x75emgYuuBuP9INkOJ/JIdAzoRgN RXM6L9V+rzjLwbQP++oUao00sLB7n28RujePDZGl+8ujcfYY4nHUFJdBUILmGWA8MK4o76IbQKF i0V6fG2sBhBt06wmXKuaIb7OHVkFoZg2+WGtSDJ+/B/XEXwGtn1SsjxtNWhn1FmQ9Vxe0Q15i6D zrjgBaMe1wEbbRv4e+tXuvbd2/8hU1F7QOTQVj2Tx3h7owJTV/pVEh+5kJWUIfbT9nqXWYx3tez UysoIyhYLBDQLoa/zxYgQ4VRHqK++fs26oKcE/RJe8PsRM1iE9Povr1oL0/MnscqXHAlqub1NAN azXBNpxDCe+vHc1VRusdxc85NWP8uHkePHFavJOLqbq6ybMUsJ/wqnkfI1Gv+unXC3XSpOW9MOp 0HX+VdN1nZyt2qqd3r1S84gQIDWYM6CXn8FhnmCA7thxIZlEY+ZN9XscrdAN7VAS8z2p1mkGvkY lah7iabUWa3nbHgPWSuN7gTAQh+tI+QBL6y2LDEx9vrplhTvtGKo0z9dya+9Ppty306RqN2sLvo JblMalwCFy0tEFA== 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() Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- 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 Sun May 24 22:42:31 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 0BE533D75A0; Wed, 20 May 2026 16:54:28 +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=1779296070; cv=none; b=EFhFSvznI16caaV6b9wprmtFfvXEr2+7C0K2jw2KBcQb+3eupctQgyhbO/Vdt0DotlBcUGy25Fx0zZuJWNW/wVsfpxKvfU0a+YdcC9kpJxxQ82SbhjqPYubtgzqvK7l57BzVRA/dywBX19TxK6qbBdYSd4h/J0EirgkHvj/EMdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296070; c=relaxed/simple; bh=W56Zt/m5WtA6ZtxQtbYwmAFL4lHK2Y63RhGd2qkl1no=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T7D5dQ97dNQU+47UD9yXjhMChZ/hP7e8BLyWTZeLrA3m0JrGoXbRO9cTiALOp0Bui9qLyLpsEFxva1YzJWdpRViNCkGm7ylOI2Zu6IWp7rBS2VmtLOcTiX1A+0sSSn/1ABNGM3Pa8rLuCKHB0PE6HWz1syxZr9AcjktBLQxj4b0= 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=tEXzPEbz; 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="tEXzPEbz" 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=L1ykyjVwNL5KxggtxIRFk0UAsUP7TQjsS7m6hNH6g0o=; b=tEXzPEbzSVfFY+9B8ckBdixUvH FtiZwRgMGV0ANxAMQqRIB94vH4gsansm14D51dBEALiRbVEu4PP2VUR5JJndpl0oRtn2U142ppwE9 r94ppW+XJH+BE60y1aLPS0U24MJZordTTVdxJLeK/vpo+/YQcnbMdIn0GoESkf3t2+4QKq1hJRDTl cJq73wPLZDl1Uj+RghqC6SI8IPCDfw99ScZUEYhkt1mXAVz2ppuYHN40P9cFd0RPhuoWUBR8ezGQI HiA/dVQT6LG3g8LJmb8h7Tp6OEgPSdzmRR+Ro7oy9qJIaSjfsqg8trOz7aosgNfqh1mr79v8kBAqp T2+cFizQ==; 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 1wPkBc-003FUp-0c; Wed, 20 May 2026 16:54:24 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:49 -0700 Subject: [PATCH net-next v3 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: <20260520-getsock_four-v3-4-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=2293; i=leitao@debian.org; h=from:subject:message-id; bh=W56Zt/m5WtA6ZtxQtbYwmAFL4lHK2Y63RhGd2qkl1no=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecg6zrKqBbm/paWH44fQIZrRaHflp4dK2qth d5viTMWxqGJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bQY2D/9H5x44lC4NChNsXQn+Q0vXGTd+vDptTZyVBuYzSu4XaHFlhkMqyxi18C8r6avjT4zyVQy KZqbZi/thnPd8CdXvS9G0M7OgML4VEMHbgeSWV6FXSksaYLPvblbtUUiuy6dy9LpbhzFWX9RmTx XyWHYbxt42DarDTgGd3ZkyM0JxkCJHyMMgacWU/ZLs2J2w4eyHtkr2wRpwWqZwiBmOJCABLTIcs pLeRAbr10ZS0lGU9pP8koT24ivfQrhjWE7oFFXl1k1O+vg6D6L6UwGquxpGv26j5IJx9juSzE2W pax6QCURhoUriOZKjScFEjfq5WRTivjU4dVM3rSxzV/Gkz7YyAbXkG7LvRM3KFgXII7982osH81 1ytasaJGCSHG5zkMldLOYdlpZqouYoCzlpR4boKYkEHA0uA5qMCepOJn4TYFj2T5/9K1pONmg88 spHLU4VofQQSrflLgOhPLYPyFfxrY15FbpL+nZy8swv4RH/na3B0dXjDjNnT030OzvMbVDN+lrM 6MAGxb7dkeWP0rO6gXn1Sb1fSm/ipzhLZt+M//NwyKzXPSf67uUEdn/gBl9EPkermB/4sa3R+UV 2/jyrJybU8FI8QAzysDLaMt8AAN1Tqvg7t7ZVcJnD685fGCRWfa9GNcV4BLw7ekavkA0Qg3Gh6f H0LWwjEA2hjzDbA== 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() Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- net/l2tp/l2tp_ppp.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c index 99d6582f41de2..46143e882af5e 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,14 +1357,9 @@ 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)) - goto end_put_sess; - - err =3D 0; + opt->optlen =3D len; + if (copy_to_iter(&val, len, &opt->iter_out) !=3D len) + err =3D -EFAULT; =20 end_put_sess: l2tp_session_put(session); @@ -1634,7 +1628,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 Sun May 24 22:42:31 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 CB6463DA7D9; Wed, 20 May 2026 16:54:36 +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=1779296078; cv=none; b=mftQOybJ1Prv5qYeTKeqLAIGQ9XvkCt4TA6v4H35HieeR69mftBEfVDW2igZUBva4F+nUC/RB0TLQmen+a33IBJmDDTH+e5mAudz1HZRT6lX2zuG1hVhsDiq5KXyyYiNmS7XC+iJR4nWzX7lYFpZnWQ7M37Kv1PuF/87gMmSgyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296078; c=relaxed/simple; bh=sp88kJh3MpZ3HcYglUnXhuzMAOAw7teBpY9YCzaoASA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aG3qmxMkndxb62LwjwBXfVCu8p1GbM48+s1NMaNboojjbsaTYKQWDXY+TVv3Vz/hXvNi6+YnXaafHeuCfO9aMHFN7Vcft5n/RbEV6gj3KDt6X3FzD3/Qlqa67v/+4lUuwpeVzwpssSk06BJkKSaz3jD6NH3exoCdFNFazM3vTMQ= 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=uGvrnsPM; 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="uGvrnsPM" 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=EqRgAXV6Qi88VaqKjwckW39kYh3sBGxBCDGEqJ5f3nw=; b=uGvrnsPMxG3ZSpWpbS5dwxE6f7 9mAHGKMm+oWOs9Q4Z04YmDj+YUZMgSCDBJVj0qB8dnCNhiDj3ieRJmbZuxFSFfcnla2VTjykGVkNy 3pVZ+hyZbW3XRIloqJmDaqwg4Nx7H8gmo0oSDGQGfgCrA5RmHHmNQQCh4F8wGIYhy4GMXsDdJQa7V GCilwLv/1znx8FJzXlSpNc5JErMDmcVQgT17c2Jw8XH7PQsxw3eUACRPcQDq+JBXnE4LXJ8F8156o 0eGeEmE+nFQwyvlkiOeL9epVej4WuMEg8VL92+9X4a369kMK7LZCHYzhhrlveHpCqVyPHsTXuIoom swaxJq1g==; 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 1wPkBj-003FVA-0E; Wed, 20 May 2026 16:54:31 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:50 -0700 Subject: [PATCH net-next v3 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: <20260520-getsock_four-v3-5-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=2102; i=leitao@debian.org; h=from:subject:message-id; bh=sp88kJh3MpZ3HcYglUnXhuzMAOAw7teBpY9YCzaoASA=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecgpTUnRAVgB9dlIN8YnvFFKVqS/CMC1dfQf 5dGqvTWh2yJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bbROEACaNb3NDKOvOlccp8DSKEv8PeV6ctWb36Chnkby3Z+Cp+NqpUk4VOQyu1VuQ+LvlaD4D3z 4+aaatwNgjcyPumwXBcnYONR3QyqEaH7EP2X1soIGC4GEtqAVjilMsu/IBaXDcPJDcQ33elkf46 JbKHTZr2BuRl3LMPUg3U7oGHh6WN4yCc6hskzlJYjChveUPwY/3tS5SFjSdGKq+0IfJXSvrXwzJ uebHWziXCKeI6N0I5NgrN6LX68B/skCTyBBJiLgWz5Zuzex3aGt+XRa9GIALI5cuqn6l8UbxKti yYS0BBTCb5h3ytFtKJX46UQUYjA/ueSxj9Y22BVGl38FhI3OgBqvt4hivoM6Pu1T9F2pedOzQRk RQNgg8r3GZvgmbrpVxcRtF8czJTIn+CT8n9Ze3BQ8Moo5aEoiERIUVwz7a2mPNF+n1s/mHVjttn SLBvYyWwxDH4IPXBzDRC+0EuNOFVFfgBMIspig3oX30/5eiNsXJU2kVxVjfxrDaB5kOShNEdQuq b98XGx8K8f2pYrTnR/gqrEk7LbZGzE6m13CMFoiOwxhlW2RuMAFgMWiQvoky2kXRT0Ym7BDMkz+ Fi2pN1MR7DJvYr6COUYACdNPgdm+HdS0cBdTqHlJkWczhGcSGJwt+VAcHW40ZnHJdUka99eoTX7 g9AZfRk4DRzgQnw== 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() Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- 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 Sun May 24 22:42:31 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 0BE9A3F65E0; Wed, 20 May 2026 16:54:42 +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=1779296084; cv=none; b=kHDj5JjC7tTCo1ASzTeffjomZ58FxFVYEjaV+t89vw+q1CYSBHC2qRYcKI1of+V4GouA6yMFkKgb5/gTqtlPWHa5VydD1m3O5KHuedTpj0e/pmmSrGJJ9cJMAc7HeytOsOo0W4GKRK2bx++VVGFER1BecYuZglC1mPXoBW+Q/ug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779296084; c=relaxed/simple; bh=EJ91vFLbXslMvIHRojLDFKgOipEyDnI9YsoyRqBaYVE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YlqhUYEmB6NTk1bLtewmt4HviNn/q2Ugi4Bh0m4e20ZkNgSSg6AARyt16YgUgLPQdNiBie3cltTzCZ5zfxfFbSnyXWXvqh45i1xIdjgLmv5f/Lx8E4ietlqsHkz2974VSQct7bwlWDZO8PRR36PFscs6OGfEmozOhN70InQ+PVc= 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=MBmvsGU+; 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="MBmvsGU+" 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=R9vdjw1UBOL4Hyoux1kOF6cKvhkh6pXtVIRprxY+a+g=; b=MBmvsGU+I9nZL0psA6vayRNoH3 MqxPfwFe3lnlOqTRZWa9ClPh0Mp3jhXaczm0NqpUdquSShZ4e4rngIzVHClnLFIKV9WzYK6F5KqEA lKtLnr1SrRV+iYg8gwxgfNcLy5NEJMNeSF6889+z97ozgQ+91WtKJtczeStHo3Ij/hO+IZd3SJGzd mrgFBbTt1JPW0RROoZvPYLDtTZ6oL397Afckw7f0R3zrbbfzAGKIByd4bgxYc+N5lE3/4hlmwCIds dbq1eRz3ngVILS9ubI2adzTROl5V3zTdQnXxec/fwSnHoZQxdECfMqM2Io2igH7FZrg9RJLi6Ub+G yqwF5NDw==; 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 1wPkBp-003FVj-14; Wed, 20 May 2026 16:54:37 +0000 From: Breno Leitao Date: Wed, 20 May 2026 09:53:51 -0700 Subject: [PATCH net-next v3 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: <20260520-getsock_four-v3-6-b8c0b16b7780@debian.org> References: <20260520-getsock_four-v3-0-b8c0b16b7780@debian.org> In-Reply-To: <20260520-getsock_four-v3-0-b8c0b16b7780@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=4223; i=leitao@debian.org; h=from:subject:message-id; bh=EJ91vFLbXslMvIHRojLDFKgOipEyDnI9YsoyRqBaYVE=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqDecgoa2ed7mODMXM5hFG0/d4ScsBrKhwLkdx0 m4Gsba1ip+JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCag3nIAAKCRA1o5Of/Hh3 bVL/D/0UzBVtCzaf2YRbFbhLxaS3xilITTsnr/snaC5W1anUe/JAvVLYUuM9RMwBW59Z8/IEOAN t2nltU1DxtoCS8v3/Nh8cN3fP804Q/VlS9weCQOD3Veq1UYAyAf101749+7/8x6TtvgdvM6rGL8 X5gUqzjIcHlZvV33S4lsp/ZLuhxP+iBWnCoaUvEUqSG8rGovhST672w/z4akyYM6Sep02kzkl3L w4Cb9lk3Aq7iXF+VvyzfPKArVWNrMGIaFmgWAFzlVK5g78G1+jEFDcbHzmQ+U28tBI2xMD86PTb Pg3Wjb4lFqVew1oGf60ECbbJrUf4QstnLRo7zFGl2ocN8x0i8aAbiFJMqJBo7RF82lcxIxKRBoD 3G/4/QtKHLLgmsD++bzViEdQkyCj6fB7wbH9ZGTD5IPm/E9Y6qwmjaM2FwVyEVJAs6Ro9dIh80W JynRPVwC45WqJA3gWcUFDmKHJb/M96/F19/eXkcUueZXC1Dw6EjsO1g7ymMwpNKL2TZf+bqPIVQ BDNCQf/BfVotZqIelgPSebNYqzYkQLRyuuuCKpWrNMsp00ldEE2RidHDZo278aZSV37tqH7nXwL +SF9Zg8MpZiut+PYUyhOBUuSL0Y6s6CjtPjWqeWr6fcZSnHhhc35JY4p1l+/PnEblVCVPVVtoM9 jJgeqAw8jWXpDoA== 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. Also dropped two now-stale comments that referred to the old "res" variable handling. Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- net/tipc/socket.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 9329919fb07f0..3a94278a44ac4 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 */ @@ -3284,15 +3283,17 @@ static int tipc_getsockopt(struct socket *sock, int= lvl, int opt, release_sock(sk); =20 if (res) - return res; /* "get" failed */ + return res; =20 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