From nobody Fri Jun 12 12:46:09 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 EE55F4014BF; Fri, 15 May 2026 08:33:40 +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=1778834022; cv=none; b=hHU9BKuUsQO+1wTQ6cA7BhU4FTvQBLkhCaqJp2rgfXG01IXIYlton45WABE2wVQgkBnZWIlg3+dUFT4kSBVbbCqWdJB1GcRQlwIBNDcLl7xxIStM06CkQwRbmzk7F/Djv1rAf2dwVWgd5OHmuG6xp1XaSHYzVhAVo5eEfFTKUNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834022; c=relaxed/simple; bh=r3aY/St8onmv2WMn/YdM5BLkf13sTNve3esoUyo6Ius=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LK7uW2BGOsJmuGJlst6bFSCEIeqRXw1Ygm+FfuG4qBdezVEByNt2rdP+ifF8Dq/tcMZqFe93QqNAKwbHJyJb51gwQUR/m+/78HWoRwX2fuczFAj9YxwD8L1bWHz5PkUWdskxQJwMRQtpnNnEc7vMZKyuxVyyHmYeypmKk5OzGek= 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=LqvFYMrv; 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="LqvFYMrv" 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=QxR0E2L6NWF+6GLB+GEt4tksQju4Ihs/iQYSDJKIdbM=; b=LqvFYMrvGeDDx5WEdn6ovMeyDH j9GC9BsP9UKU6FpITt1CyKAuOC/qq4X+A16vYlWs3unI82VW2dSkgJwCAbBzWFABYbvTqTQeBK72M SEYMnKnNEfI4UzeBSFSdwddihK0QraeV1ykz0cWCECV8u4i2hmOqsK56A7/fdWnlpxIFv6O5eQ5jA NJCJ7yP1AfFY7HBXgZsqUgNuaL721RMXT3TvnLoDTnTQkGgUwFISOHcM7l/hmwD4XLoKGrbyLCfG4 8TlYRDy5xSEFoOmuftA1ekTM0QtulRziTrYhfvNcHIRSkSRyN2xRJ2UJrbHUVIZaV7QTvqepBKA3p SS4qyz0Q==; 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 1wNnz5-004b9G-0G; Fri, 15 May 2026 08:33:27 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:25 -0700 Subject: [PATCH net-next v2 1/7] af_iucv: take socket lock around SO_MSGSIZE getsockopt 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: <20260515-getsock_four-v2-1-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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=1904; i=leitao@debian.org; h=from:subject:message-id; bh=r3aY/St8onmv2WMn/YdM5BLkf13sTNve3esoUyo6Ius=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBtpKuS/NWfm4L0lPfAGkJxZnKMXJFTUlUcHap g1jEGEOWyOJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bQcyD/48l4Yh2ujGKEAudnJbPj2vOqqAz8Y+aMMojwzjItuByCzEDxnStHYteaKKSckBGQPt15q UeGKz68CNKxOMSG9UuatV1x/Cerj7VhSiv8sApsEw/ze4iDW3xPVr0f1u7jKdUsxF2Mt48GJ065 iQOJXcVjpR8Zyn+8972CgY0Y7ySvf1nOIeXkQ0BlPPQOm52FQvJv0ERY/EleQocLxDBPXMBQS34 /pn7s/s4yWY6DhVmkauNTJA7uBh3PJpOe2pZuaoUw3N4LUdL34+AIYuDGj0YGob4Tq2hmigQvhT WnenUIDwSlJauCFDkWKza9VvzPgvp0IrBUcYaQwEF/Znt60inILK0ainmq0JAyQqFiE2dXOagBi L4vXsTfBGmk6vgvh6gu6Mf+G6AaMDa2ef0d5t9XR+fHC2oX0o4Co/Wh4WAtYlYeyx8JH0SVhgbz dON5cJvxhy0YXVbb/NYC1fex4BiXAEP/db5IPZezxH2wo+9mvzV8ueuEtayJW5DmUi6/GmEs5Lk OcKCpKnAR8I0UU+7HHcwTMQiHIE85tfX+pnaSxzgqUQWRzeyNeWKOk70melSEVCsT38wY6YEyqj IP6w2vA2AA+4EuEDsur7LMtZ5VRg1xQRYdl3WaAUcMOALllybmhjsmHHon0pPDsKMVj3oVSBHWA p1GvwOcEXIU+ulQ== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D X-Debian-User: leitao Mirror the locking used by the SO_MSGLIMIT case directly above: take lock_sock() before reading iucv->hs_dev and dereferencing hs_dev->mtu, and release it afterwards. This keeps the two adjacent getsockopt arms consistent and matches the lock held by iucv_sock_close() when it clears hs_dev. This is not an exploitable bug. iucv_sock_close() is the only writer of iucv->hs_dev and only runs from the protocol release callback, which the socket layer invokes after the last file reference drops. The getsockopt() syscall holds an fd reference for its entire duration via fdget()/fdput(), so iucv_sock_close() cannot run concurrently with the SO_MSGSIZE read on the same socket. There is no other writer of hs_dev, and the aligned pointer load cannot tear on any architecture Linux supports, so the existing code cannot observe a NULL dereference or use-after-free in practice. The change is purely defensive: making the locking pattern uniform across the function avoids surprising the next reader and removes a foot-gun should the close path ever grow a new caller that does not hold the fd reference. Note: For the reason above, it doesn't contain a "Fixes" tag, and is aiming at net-next instead of net. Signed-off-by: Breno Leitao --- net/iucv/af_iucv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index 72dfccd4e3d58..3dd11d7a967c8 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -1566,9 +1566,11 @@ static int iucv_sock_getsockopt(struct socket *sock,= int level, int optname, case SO_MSGSIZE: if (sk->sk_state =3D=3D IUCV_OPEN) return -EBADFD; + lock_sock(sk); val =3D (iucv->hs_dev) ? iucv->hs_dev->mtu - sizeof(struct af_iucv_trans_hdr) - ETH_HLEN : 0x7fffffff; + release_sock(sk); break; default: return -ENOPROTOOPT; --=20 2.53.0-Meta From nobody Fri Jun 12 12:46:09 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 E0CAE378D8D; Fri, 15 May 2026 08:33:43 +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=1778834025; cv=none; b=VbOX0HFSAPZg0fGdUIerP2fpI+4dvcHqGxvnUARYaozPVA/+JeVta65DNy3hQ9n81R0isbId17AEu1frIzXeT1oRmJ/DgAM+t9AgVd8cuiiKz5eOczOxtAhccZ7RVAbJd5FUsFvKvhjVQIK9axDkHruDxRfHD9LXOwsNdSq+8To= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834025; c=relaxed/simple; bh=sRzstdgsXbKL6tHsxt/R+ZqoiMe+d7TM62p6vVJPOJg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UgwrfY32F09AcIzDpgjDJAM0yF4yW6hPdG8NPPTlGuRkLhTH8pqNhbA3RXjmdcl7OIqYAkkQ8TBBM/7TxjWfdBj3p2ep8o+NpXQgumrUJWEbtsSWHt8BSlBmRxJQovv+gzTRf4o3/wTWXXMOBHMAc1h8AswCdNTSY/qMg9Oq5mA= 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=s/aqgSUr; 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="s/aqgSUr" 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=wKabqMQvYbzhjiMoPiHLrjNUX1Z92dSl6JFvGORH2Rk=; b=s/aqgSUrYHkhPt/fr35701w12w A9DyPpJjNZzE3UxTXU/N+H/AxpzQ3vrIMgPibRO+u2dE4iILQKWGl4hShuNAbBdkhYOLz8xip0hlN iJKkBpeFN77ay/tDla1bMZWMmrt2nhWJV9NpqqHSAmoIFH3XVklWHrpu0tvCcMHSf2PHgQJ5XrXA8 X1+ljVTf15ANCpo8ByZdf9sfUOwivXlIjKCfoDY9xTiYPiIE59QPpQNd/RdMOKMDosVW5EjmUY/ce FlABVGC8Lv0yZKLY0VVShvmW2sqfbHSNZKrvIcT/QYBd7w4eii1o9aAjcWeaBJMfNzZpqK20c7jAP W+Vkk4kQ==; 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 1wNnzB-004b9I-21; Fri, 15 May 2026 08:33:33 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:26 -0700 Subject: [PATCH net-next v2 2/7] 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: <20260515-getsock_four-v2-2-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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=2185; i=leitao@debian.org; h=from:subject:message-id; bh=sRzstdgsXbKL6tHsxt/R+ZqoiMe+d7TM62p6vVJPOJg=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBtpKxRaiWrftzUDLaONB0HIWfi1j0PJvEiovT xf6/1tCV1+JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bZ7pD/9DS2O+baa/AApYtG4NyZMxoEfLlQCyoT7+qbNowrZ0RAjojhEjXl0AwdLXeRhq79gBPD2 4683obkAkSiabr+MLGrAsFauz4cAEnqcztMEDMlQcdM3bYo+40wBl9o03VTDY4ak35ula+4x9z6 qsuTIm7QaeRVoqP35umRwazcSTAXM1sudTcHEf1E6L4j1zdcMLpfSBTcbEePzguOAw3tmpixhwQ rVNaK9HyteEfYo7iHhvTb9/ytgDsUp/OopHZlZtm5SXGWzw3rS+uYaN+x55xUKlJqLOtTsUhSqZ jucEh/aNzpC8AAb6bBxtDXQX2wKznv9B5QWufsjMpNLs6vOD8owrwDZLEg585aThEoyazIIiPoX vhEvFijbdtGMYQgDKUquC1Ky4DfkDukY6A2/BD5YcGJYvEo3tVLvzjr+ZKotWKO3vYeDLmZnEtn 6tI86nrJuAIROOxYAclvRmuNPC6k1IEfueyJ7SMZJgO8xIcwkueF5xrdaJkW12hcLg/rEy67VMg BS5KbndiBJ8vS3sfrm3aZA4qXTbZR+/YFC+HXcmvh0JW1VzAUWIFcvDS8zM2sKelaVeilAYUhKg daiXkYEMUHYuSJ63el2qQHPg34xVHBlNcDW8WoivHSI5UgYMKOAc8KUFPyKtC6Xwigz6s1GLBNX fEI/N9ULhNmsTPw== 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 Signed-off-by: Breno Leitao Acked-by: Alexandra Winter --- 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 3dd11d7a967c8..c0faf06d4afc0 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 @@ -1576,9 +1575,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; @@ -2230,7 +2228,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 12:46:09 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 69D914014A4; Fri, 15 May 2026 08:33: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=1778834035; cv=none; b=G9GxJ1trrurc8E4qsoFKL6aRS23qcSpRPPKEQC/Vmr8FuiO1aKGvgQIw3MiFNX+8VS8YnaLBdFN3feB861OqfI/HaY5omDyqOWNdfmUR2veI8A5TMkZ+A6qemoHf5UbaXq0xlf7HaghUrA+NUF2wgvPOP9Pp5kxXNjRRkSpO9c0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834035; 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=U4oaFAKKkGTiYrVAhxiaZk/1QHOWhPMV+JhlYjXil+02i8aHxDtq0unGGHJ6dtek2+c97nq2nrsnegd/a3fqsnmbNsGzz+5d7E+Y+RU1ZXyyWyJtJNxnS/Kt6/w2YiwF5pnLg0NOeERHvwmsyRBw1KGWNwQVZigw3afygvxrec8= 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=KU9YorJ/; 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="KU9YorJ/" 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=KU9YorJ/Hp4rbEiOUtAiGcd0hW wd8YT/eY8Z1k1rNowfy910L+Rf9N2gwp5kMUMbA4FEP9KxEtUXR4XMYvJ2hIuHfZ+dXIlQCwXHxUa ydJ+2VGdKhXWi6/saAuNOxQ66s/H9amy1DC5+4dg3yNa4Y7BpUI6U3ap9Nzb7wqIS9Ghtb+IlimuZ BuPBKCEQxbC9ExHvGTo9PFH++UROpTGVw8ex+7LLqXmPhKMf2AWN00FvuXU8k40juM7CeDat58Tdy Sd82o278MtXHtlPwkwUm5vQgxRGFAMx2QCNgC0zRXHbQBaCm7cdmgwoOsFs+zuh+oKB+HcAGcDYQk yChpsRqg==; 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 1wNnzI-004b9T-02; Fri, 15 May 2026 08:33:40 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:27 -0700 Subject: [PATCH net-next v2 3/7] 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: <20260515-getsock_four-v2-3-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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/8eHdtAcsmYgBqBtpKI+pXBtju5rfwiCSvXDS2ZMzcrCVCnjDi0 Usbz0i7BkeJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bY3eD/49YT7QF6Cq4WhqeR1WeJahw0Yj9bE5BVqenUWD3L0nXNS04gcxBEpuebgr3tyJhenutu2 J9TUdN90F07HLAQUNpRyF47bJTrSVSKZtSPVC9j39MYIT++2nBUeDjqe7ngopXB4Wt0l5nXDgUe AbOibdNY3dMBFZPiPuMKouje3hyPRQLAR6IEB9GABViTeROf9HszfQhrh3aNqnQg9Ky7ix1QqTU 1SeueG/3cJ9igmUoQA7DW9SBbWOOomHqYQfMJAHbMhegudb9eplWcfvwj6bscKSPhMIxbcUfCxP BKkGH7zD9tgZyuX80pljxMtHWdRDS6w2a0aoJuJ+lPjcFVWOwK8UyndEbE+YkFbhbUFFQ7OnsVf Zv1uAWfPK5Rm2I83/1LtViq7paz9N2PUQucg714tOprsPPB1/Q3pEDtmWoOzrjNa+GG2Ojkf5hX SdZUC7PXL6lwYM0toL84aR6oTme2zjSBUJlfut1N2IxoKpT6QuY7hmoF6Z8MVEOYDH7m5F+ms/3 DZtyl6T/dbZtjhhCVtQd5vYzpb7JfaPBF+w2gCvsU5oiQCZpHgeAo1XfEsFpndbtSaKgQugyAOo 8UA4jPZfyCld/TxCSnRiIGY0nkiWYDuGB/g2xgZWLKR9Q+Ke8u/a44TLAe5TlaVzboFGuJVuJuV rSH4ay84XyWPJag== 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 Fri Jun 12 12:46:09 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 94F0A40FD8F; Fri, 15 May 2026 08:33:57 +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=1778834039; cv=none; b=TQuYVkgxaJUQ4OHrol+QUsSTNMjYxxyPEfSt2FvLatVpTINT8JuGgf3hzdS3Ue+iWRjNQorYT1y9AYhul7XNd+4Q+7IjV3+ZiCF5bpAQVyEC4s5PTe2mAAWL9DNlsvRfyCEge38C5GTDfO4fQQSXfCA2oNNbOnw63ZK1hXtHXpo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834039; c=relaxed/simple; bh=mLjMS8AXXQWWpHQvJDt9wZGN1YLyFgu0AP5yDHz+tM8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OGkEK0pZgWJ682wvIptGadgHT87Y51AyDqqGksPDG6bH5UPOwID3c6OLXGnmKKUyWVuv8vPQxF8OCP5dmaavFyVthBxn3VNeeyd1qm0DSy8kWbzny3d3FMOylwmtdJ6AWenboNxu1xeormAv3kgukcmYoUJz/dIjsEUtyE+WcKI= 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=lZTX8sEF; 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="lZTX8sEF" 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=lZTX8sEFA55RG+THVuKsgwkx8j a5Ecrndzgg5Wbncj86IDoxjltKG5Tqmp/d5xK4AeGVsrD2Xzvi1vvKaaKXGLKQcALzLXRuOMm4TVp F03DAc9nZEejo6dt7KBDtqxujokoSoVqKtwcGsngH3xHQcrWiecbwtqZg2iim0QNG6W2LDTBBdUaZ byI3DHxDIty1j2iaYoeN8q8t3H69aKUqNNSVMOAKLtLmUvAZ1vSX+5q6/BU4mLsGzM2K+EgcT5PYQ 1lbISls1XnrWj4pLOB4Pd97BhmvD+EZ9j66O2+JQXlRARDN+0+6iXXdtCtqi14iuPjbUzAt0YZNot YmVS/4yQ==; 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 1wNnzO-004b9h-1t; Fri, 15 May 2026 08:33:46 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:28 -0700 Subject: [PATCH net-next v2 4/7] 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: <20260515-getsock_four-v2-4-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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/8eHdtAcsmYgBqBtpK1LnbS49KtCbUe6Gz0SZPIqNo5LB4637FB zfwXecNSneJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bc1WD/4vl/DjHTDe+El9I1dIWtMFioM9nJ33C04jOEmQFAwhhlHABqOOeGm4lmeiZmIJOhK33v/ pJuPZEwUtCTXhbgbwVJ5eRWdT64CbkUnU0zwEL1Mn1rztJ0h5Jb8aQ6NJIGiCVE5Ge1aXk1sSXi vNbf4KXPAWhZ9SmoWUex4mxz38eIKx9cb41ueMPbW28zwiZHKkN/askvuHBVwZKvsuFIfDYuJuA Ozp1GYngGxV2mCIj8rtatl56axnk9l2mwex0m4tdb0TDaFGBGza544EDfQRBnR4EA/AO3suaxUt fJBz8C+K54GK//L4yOP8AhAQrb5YRWXXW/kDkls9KmXAQiDk2KtDN5GYvfk0Kt5yct3VKNd0KOG C9B8E2oqkDkvhaXOjN/gY/AIutyY1RRvvab1yybyCFkMpSi8wk4p+B6ISRtdqXm16N9T+IP2bPL R5ozucfTquAFmYnsxX4TkC4HBaJh0w30ONm4+04poDEkcUKOd/oK98FWop4kSh+5koiwGqyJy0F p4b4ST2UyN+yGjM8/KnCOPF5Lj3VTmMh6HlMyhagEncG5j5iBR9boeEi7GpxqsFHSGrjwbLs2/T fsSQq9AqsGvPn9L682zevtg7TiZAPgOpm6hviTc5f6S2KyWnAn+ZNKZHfzt8aNh8ShoT8ek4b7J 42DZyAcytJzye0w== 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 Fri Jun 12 12:46:09 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 16D9840245C; Fri, 15 May 2026 08:34:05 +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=1778834047; cv=none; b=ckp9nHVhuDcJTMgclVGoJ0jLluwS4Kzr2gIE8wWdLy1JuQCnP0VDnbbsJ0uY/4pAVo5tbgS/AtGP70LdJpvUK7BEb7fQmbx+/kZoxzssfhycyZw/eannJHMdg7SNpz4Eq3UQPFA45F87g1PHRNA4egra5uubNWISziuAu9VcOgE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834047; c=relaxed/simple; bh=W56Zt/m5WtA6ZtxQtbYwmAFL4lHK2Y63RhGd2qkl1no=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Trst1dH48NnzQy/NFLzBVdGS64wKkE9on3LALoR8jsk9PgjOHHx5ICt4LHTkt3J0t9qIGjxyxMlXCXcFanDK7RxPH4CoCWICMxW4gi28AMTFd+qonzWuLv8fUTNEXO0Kc9FhwNQ9ZK0tOz6w6Lff7z5yfOJwQF2W0/wTwv20tWU= 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=X1Xwegh/; 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="X1Xwegh/" 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=X1Xwegh/TbtDYviH9UXIL/zJE0 K1elmZG+B9gSV6cVWWrlJdRjC+D6E6e+iXBWLIDgsjlHPJzBKeHgkwYgTfQqeEQ6hZ6AtbAUAcSkX b2vCCbZn/zl+R4+T1uFSzN42+Lo7qDknMBhT7DH8P6XqK/WsKyranuS25mMOM0alFc29ELA/yOiDT r8IxUGywom0LHJBW4FRkZ83vXDcj+64CpdqrTVp4/HvNTZPaFq/WoGOylGmKAEJI/ylpsihbDF2KM rz/ac3gQ4oidh5JaHBjKBNZgBQAvcusHIOKWNBLrqDgYpOuL1ne10L/rIuOl+De5CD0M5tcXN6BBV +GSFhstA==; 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 1wNnzV-004bCh-0b; Fri, 15 May 2026 08:33:53 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:29 -0700 Subject: [PATCH net-next v2 5/7] 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: <20260515-getsock_four-v2-5-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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/8eHdtAcsmYgBqBtpKrXuQgkErmGkxOiLZxQOPdS8pY3yJg3A78 lMJR51CnjaJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bXFAD/92DWue4VjunUMMpAytLhzekJP19SL0ruIm/U9TKHSCNpdyENK1ekXLPUdNNqqe7gaqqo6 MULBfINYTK4NnP6Fj6fs1KBDuSJ3nXPGfFlWSiFbAf/ubsMFMRYZc3yC8hYxWQzWA5GnmNqVXyd shgXjXNp0j27c09rTp72iHQX5scphj63UyhYD32VyzuF8STaAuF2qlBMbntPD0F8AuiA726ZbHF fp8c61U4b6/TaAPxEA8ZKN8gBRgKiDdnS4cDU3w2fi2gQ72bN4VLw+oKu3Eh9F0msGPwhkCbIfU Hsu0CmiuyS6dPdAtEr36Kk/1NUKz1WWSEPDS2281WpING0LEy3Q+ju052ccDkloer9n5TXBMgQX yqncvXwLsPcOQsJTjWym77aT/1yn73+9/wT0poNFXiMIE/DtS9sUbj/3C2pVAGUcrAEkPi2SCat Ycg35HAl80OaQINZIKZ0YWy8CwWIv+49b9bVNPY50lBNpPcia+HFr0G19CdeTaYTG3OuNQo4qFM cAb9vB+YiiQZXdQKGJ10jYihBPtMdh5yRZNEkRUtS7OeWd898d1cgNL+2GKTs/lBL7FFyVRH9Ar fp71LjyBMgEIIAO6LGXa4yet5FvUZF7f+F3Xwm8LGWVHWjhLLQCTW5QiKZMFa/uwLeS2dWft+i9 9B9IptAT8OmhwHA== 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 Fri Jun 12 12:46:09 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 C5F523E3DAF; Fri, 15 May 2026 08:34:14 +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=1778834056; cv=none; b=BmD0RfTwL0xdCC6p4E7h1mmD8Rrml5C5h2gNlzGsoAK2vvCdwoJAKHUe5hBFtnYTGKw5mq80BoZzP+ZTqNsgxTb4hLWtv7snYytb3+Z7GWBerHA9uoVFpBNz/NEwpCCyW8qodDnOx1+/RHb9eQS2wD66LHcOGSQfoAVTOl2khuA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834056; c=relaxed/simple; bh=sp88kJh3MpZ3HcYglUnXhuzMAOAw7teBpY9YCzaoASA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gqJSMxcVKMSs3kgVlHJN7QTrlZGqKvwCEtISVsNJxMNJcBBtMgqLKlbEgsGy2aAP1yspxWPo/UD7vXR122ghFSO56ND4GzTriyF7nKkcPj2KgsQtYycfASsj+9DMHjaDuGtzHEyCyYLO5EKYhKvACK2Y6m/SPvBhUA50GmSBYH4= 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=CRyDIRAy; 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="CRyDIRAy" 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=CRyDIRAyQSYCdtzgPvfGL6jCCm n/tO9t6M8ocddhefEH2fV/GyfB+G2igVeNhB/kND4ZND3UFfAnaJ9va1MSYhCHFkjdpk6M+pTJzSE TJSAF0BCMRzEcEh1ZzlyCOMGrOVhBZRXaS7ZArPREtDTr6dkDk+P9NtFQoQZbEGmCy7D41H+M/cwp cpM0sUTR9pU+OlqXeZnybzkZzWZL+PLTxUqJ5NO6IIoJCm02gYn93gEJaGJWL+KCNXVnQLMGV7GvJ 73OcVB7qqUNT2zQDDk2dc7gTdDzaCWfMQ4z36Jxl/OQAcJ3Ojw5Kc+CxJbyUTdpvyReRgrm6LeSx8 ozKp6ZLA==; 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 1wNnzb-004bGf-1f; Fri, 15 May 2026 08:33:59 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:30 -0700 Subject: [PATCH net-next v2 6/7] 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: <20260515-getsock_four-v2-6-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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/8eHdtAcsmYgBqBtpK5I8eWkl/UEd+8ghgYJX882XZvUGShw6u0 fFmjDGaivWJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bVDBD/4r4jaba9xpKDmtVV9nJLgeHxxJNunCehcslbdaFfVbpcvHLDJuOBuOgbm8gvxhi59YWuD XI82zslHHrgcM382x1Yn5HaHu1SFwIo/Kc+NbJ340PlWAPhHcfwEgDzm1X8GXygw0jExCXpPSbC lXM8QT3Cg5rZxC+0GwuyWH8ylXVZqve9kwOqTxTLyvlBd6OuYpUXL8iAIOF9I8wi9bCGjK0TUMF udOcN5OSBCEqd7txG8vYgZw4mjO1uTDz7uWm45vP2uGeNbNocXIzkaz/n2iAylJIVjVOtIjbTOT v65jN8MZNZ9qZyHQreNaC5xOQRGVMW25jPfDGQpkWZgyctOyw6Z1zzXQP4kY20+fV5pTgmBxp/p nAxs+w8HC19XnvNU/suLE69LLM7nADV5Hz5RcEu9M0dxx3IVGRFnat++5D7AT/zHbo7unTxLTaZ GBGD5H64NIU+tadU5rrPruvw5LpiKFHZWb4lJhS42YDUBaRDQicKHyrO9RLI/1sCX94wLb9jDBR Ht1rQIUkugRKikQD2v3QszmXtrz04sM6b+R4AZBIwo+Lbv4Z8B1SXvlTIgjO5QiqHer8Gf90FZz 3x1m16Se5REvhDE7j2i6mNWGWTNc+DkDVKNRacqx9rOzOsTdtQcIA8xqbVPCBEBaWLhBsLFbkIA jqP58I5QJD8P8og== 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 Fri Jun 12 12:46:09 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 73E3941C31C; Fri, 15 May 2026 08:34: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=1778834058; cv=none; b=uH1colzsLBUn4JKlfd0PriocpzEZffeoWl0OnxAuIxii6l0bQLf+lwf43V+QyRK75zho19CN3C+dJCpERxnQLnWz1gIy0LeSrHqJ6Y6NPHWOfc6CdHjLhEoG1BsEXgEdsEJWOmA6KlvHlMGc5tdCrZ/2COlp13RQ6PCWvomh8eE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778834058; c=relaxed/simple; bh=V6yEqaFQCoZI8qoiiyIiHOJF16Tl/iQVq/00WwwB25o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CLV8bX1Su9NLklMCCvUGFLs+3a4HWHL5rb7D/ck8jdZj1s7XfeiXN+PKoYlfq6rzWSoxyTmFRd6tm6nTX5Ng0siWMeWkLJ/sKJwfeoDf2gAVkRcdwI3xfDRWVtD7BdPnRj7zHw5t9Yr4TRXzTwBW4kzudLQ9newnpZQOwhoWPD4= 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=Rx0Zlvle; 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="Rx0Zlvle" 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=Y3nib956f6mGNZYwsjE/R02g8MxIpdLt/ccJKQbM66M=; b=Rx0ZlvleZQhuppC6zDjWw28UQo vrltkd3AVr9lVmeaabZ2oHNvXwZ2Q/dw9JKA7RKBytJCVm0uAHHPhuxg1hqFtCZuURsxBSRugBY3g 5BBvtw6MO/0nmxa3Qk7YDCfV58vLRZKabL5kyoK3fdQrBQWYGYjkUnaFPtD+9BNm++B69RPyNZYPp B/KqgA6rpcOV1cdxHxuiGFn8JAKg7PRA5ryCtjq3zPsFhw3TDpfjkFzhhwUH/Ui2JB84VSvatX3Rz p0asd653PMtzAAq6taFIoENC40t+XzdmUbYqBSMI9CssAyVnIa5l5viptkPkzFlpF31VfRG16I3Jf 9iaYo4Tg==; 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 1wNnzh-004bGv-2q; Fri, 15 May 2026 08:34:06 +0000 From: Breno Leitao Date: Fri, 15 May 2026 01:32:31 -0700 Subject: [PATCH net-next v2 7/7] 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: <20260515-getsock_four-v2-7-0d8eed952627@debian.org> References: <20260515-getsock_four-v2-0-0d8eed952627@debian.org> In-Reply-To: <20260515-getsock_four-v2-0-0d8eed952627@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=4043; i=leitao@debian.org; h=from:subject:message-id; bh=V6yEqaFQCoZI8qoiiyIiHOJF16Tl/iQVq/00WwwB25o=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqBtpKwRKKYcS1QkqhNpZrg3ef84+znnoD6pXlR VyBhF2NXcqJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCagbaSgAKCRA1o5Of/Hh3 bWPpD/9b56rwVJ/8WTMaqjTyn17SnrQzZwoUHqpSlnmNhKOBIAyRfZ+G6X7dmB2eQ93ld+YSQGj h9cFihSTIAUG7szpwXTtU75DE2Tf4+gvnRkY0Rr/xOprNGvBY+DW8HICG3qEQniQUnWghhKnMta ZlQSRELprUyQjI+U8uaoJLMlm3JJJdQ28EbEQ1Ndd/Co4ytQYQ3iXSIepG2SwrP42W+eSGsu2Vv 1kHarjeeYbbASvc8Qi4GdpBSkAixaBCdlWDP9XcXr4lXS8vh56I48E9vVIt6DDbnVuA3qSpCX9a eB+RvQSJFLnnyNk/lhGmBb//dhTxLJjE2PTJq7IEUkLodPELw90SG2Teqpbgn/yaLoN5Mv2YGyD U9CopoIzYp0l2P/mj7cb3FtPnh3XDCWED8q2sWE9X6iwvs7FWXm0aSxp0F8vISmGMUpqUyN2u8W BwO0bpqcjUABqDi+cm1o/TuXS5Vjfk9s4PZgUXVmm5RTJARgntWUraDbAF3hrFWC6GFqDo5VHwf nfAzNNVWbPSudjnPigpV5r2hcSi2UxJof9O8ribKn/99u5/I50bdyhkRXQJP/7G8Hfoij2QHLWY k9IV1+DXkCPCmY/2xYYOFlqtILlmp1YmRuXpxBTZcos6YOiM3P17imvRDbdoLs9swql9PpbBbJs 6S2TCcZXNRv+JLw== 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. Acked-by: Stanislav Fomichev Signed-off-by: Breno Leitao --- 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