From 08ee8ba8775080dc255d5543c4ca1dc338ac7879 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 12 Jan 2023 14:48:50 +0100 Subject: [PATCH] drop net patch that broke the build --- ...e-op-from-entering-the-listen-status.patch | 77 ------------------- queue-4.14/series | 1 - ...e-op-from-entering-the-listen-status.patch | 77 ------------------- queue-4.19/series | 1 - ...e-op-from-entering-the-listen-status.patch | 77 ------------------- queue-5.4/series | 1 - 6 files changed, 234 deletions(-) delete mode 100644 queue-4.14/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch delete mode 100644 queue-4.19/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch delete mode 100644 queue-5.4/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch diff --git a/queue-4.14/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch b/queue-4.14/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch deleted file mode 100644 index d7501713346..00000000000 --- a/queue-4.14/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 2c02d41d71f90a5168391b6a5f2954112ba2307c Mon Sep 17 00:00:00 2001 -From: Paolo Abeni -Date: Tue, 3 Jan 2023 12:19:17 +0100 -Subject: net/ulp: prevent ULP without clone op from entering the LISTEN status - -From: Paolo Abeni - -commit 2c02d41d71f90a5168391b6a5f2954112ba2307c upstream. - -When an ULP-enabled socket enters the LISTEN status, the listener ULP data -pointer is copied inside the child/accepted sockets by sk_clone_lock(). - -The relevant ULP can take care of de-duplicating the context pointer via -the clone() operation, but only MPTCP and SMC implement such op. - -Other ULPs may end-up with a double-free at socket disposal time. - -We can't simply clear the ULP data at clone time, as TLS replaces the -socket ops with custom ones assuming a valid TLS ULP context is -available. - -Instead completely prevent clone-less ULP sockets from entering the -LISTEN status. - -Fixes: 734942cc4ea6 ("tcp: ULP infrastructure") -Reported-by: slipper -Signed-off-by: Paolo Abeni -Link: https://lore.kernel.org/r/4b80c3d1dbe3d0ab072f80450c202d9bc88b4b03.1672740602.git.pabeni@redhat.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Greg Kroah-Hartman ---- - net/ipv4/inet_connection_sock.c | 16 +++++++++++++++- - net/ipv4/tcp_ulp.c | 4 ++++ - 2 files changed, 19 insertions(+), 1 deletion(-) - ---- a/net/ipv4/inet_connection_sock.c -+++ b/net/ipv4/inet_connection_sock.c -@@ -894,11 +894,25 @@ void inet_csk_prepare_forced_close(struc - } - EXPORT_SYMBOL(inet_csk_prepare_forced_close); - -+static int inet_ulp_can_listen(const struct sock *sk) -+{ -+ const struct inet_connection_sock *icsk = inet_csk(sk); -+ -+ if (icsk->icsk_ulp_ops && !icsk->icsk_ulp_ops->clone) -+ return -EINVAL; -+ -+ return 0; -+} -+ - int inet_csk_listen_start(struct sock *sk, int backlog) - { - struct inet_connection_sock *icsk = inet_csk(sk); - struct inet_sock *inet = inet_sk(sk); -- int err = -EADDRINUSE; -+ int err; -+ -+ err = inet_ulp_can_listen(sk); -+ if (unlikely(err)) -+ return err; - - reqsk_queue_alloc(&icsk->icsk_accept_queue); - ---- a/net/ipv4/tcp_ulp.c -+++ b/net/ipv4/tcp_ulp.c -@@ -124,6 +124,10 @@ int tcp_set_ulp(struct sock *sk, const c - if (!ulp_ops) - return -ENOENT; - -+ err = -EINVAL; -+ if (!ulp_ops->clone && sk->sk_state == TCP_LISTEN) -+ goto out_err; -+ - err = ulp_ops->init(sk); - if (err) { - module_put(ulp_ops->owner); diff --git a/queue-4.14/series b/queue-4.14/series index 02ba4f95d88..962dd2a1e23 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -322,4 +322,3 @@ parisc-align-parisc-madv_xxx-constants-with-all-other-architectures.patch driver-core-fix-bus_type.match-error-handling-in-__driver_attach.patch ravb-fix-failed-to-switch-device-to-config-mode-message-during-unbind.patch net-sched-disallow-noqueue-for-qdisc-classes.patch -net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch diff --git a/queue-4.19/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch b/queue-4.19/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch deleted file mode 100644 index cdb1b2c2fcc..00000000000 --- a/queue-4.19/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 2c02d41d71f90a5168391b6a5f2954112ba2307c Mon Sep 17 00:00:00 2001 -From: Paolo Abeni -Date: Tue, 3 Jan 2023 12:19:17 +0100 -Subject: net/ulp: prevent ULP without clone op from entering the LISTEN status - -From: Paolo Abeni - -commit 2c02d41d71f90a5168391b6a5f2954112ba2307c upstream. - -When an ULP-enabled socket enters the LISTEN status, the listener ULP data -pointer is copied inside the child/accepted sockets by sk_clone_lock(). - -The relevant ULP can take care of de-duplicating the context pointer via -the clone() operation, but only MPTCP and SMC implement such op. - -Other ULPs may end-up with a double-free at socket disposal time. - -We can't simply clear the ULP data at clone time, as TLS replaces the -socket ops with custom ones assuming a valid TLS ULP context is -available. - -Instead completely prevent clone-less ULP sockets from entering the -LISTEN status. - -Fixes: 734942cc4ea6 ("tcp: ULP infrastructure") -Reported-by: slipper -Signed-off-by: Paolo Abeni -Link: https://lore.kernel.org/r/4b80c3d1dbe3d0ab072f80450c202d9bc88b4b03.1672740602.git.pabeni@redhat.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Greg Kroah-Hartman ---- - net/ipv4/inet_connection_sock.c | 16 +++++++++++++++- - net/ipv4/tcp_ulp.c | 4 ++++ - 2 files changed, 19 insertions(+), 1 deletion(-) - ---- a/net/ipv4/inet_connection_sock.c -+++ b/net/ipv4/inet_connection_sock.c -@@ -903,11 +903,25 @@ void inet_csk_prepare_forced_close(struc - } - EXPORT_SYMBOL(inet_csk_prepare_forced_close); - -+static int inet_ulp_can_listen(const struct sock *sk) -+{ -+ const struct inet_connection_sock *icsk = inet_csk(sk); -+ -+ if (icsk->icsk_ulp_ops && !icsk->icsk_ulp_ops->clone) -+ return -EINVAL; -+ -+ return 0; -+} -+ - int inet_csk_listen_start(struct sock *sk, int backlog) - { - struct inet_connection_sock *icsk = inet_csk(sk); - struct inet_sock *inet = inet_sk(sk); -- int err = -EADDRINUSE; -+ int err; -+ -+ err = inet_ulp_can_listen(sk); -+ if (unlikely(err)) -+ return err; - - reqsk_queue_alloc(&icsk->icsk_accept_queue); - ---- a/net/ipv4/tcp_ulp.c -+++ b/net/ipv4/tcp_ulp.c -@@ -152,6 +152,10 @@ int tcp_set_ulp(struct sock *sk, const c - return -ENOENT; - } - -+ err = -EINVAL; -+ if (!ulp_ops->clone && sk->sk_state == TCP_LISTEN) -+ goto out_err; -+ - err = ulp_ops->init(sk); - if (err) { - module_put(ulp_ops->owner); diff --git a/queue-4.19/series b/queue-4.19/series index f5669eff009..ce738ac246c 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -463,4 +463,3 @@ mbcache-avoid-nesting-of-cache-c_list_lock-under-bit-locks.patch parisc-align-parisc-madv_xxx-constants-with-all-other-architectures.patch driver-core-fix-bus_type.match-error-handling-in-__driver_attach.patch net-sched-disallow-noqueue-for-qdisc-classes.patch -net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch diff --git a/queue-5.4/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch b/queue-5.4/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch deleted file mode 100644 index ad79e95d7c9..00000000000 --- a/queue-5.4/net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 2c02d41d71f90a5168391b6a5f2954112ba2307c Mon Sep 17 00:00:00 2001 -From: Paolo Abeni -Date: Tue, 3 Jan 2023 12:19:17 +0100 -Subject: net/ulp: prevent ULP without clone op from entering the LISTEN status - -From: Paolo Abeni - -commit 2c02d41d71f90a5168391b6a5f2954112ba2307c upstream. - -When an ULP-enabled socket enters the LISTEN status, the listener ULP data -pointer is copied inside the child/accepted sockets by sk_clone_lock(). - -The relevant ULP can take care of de-duplicating the context pointer via -the clone() operation, but only MPTCP and SMC implement such op. - -Other ULPs may end-up with a double-free at socket disposal time. - -We can't simply clear the ULP data at clone time, as TLS replaces the -socket ops with custom ones assuming a valid TLS ULP context is -available. - -Instead completely prevent clone-less ULP sockets from entering the -LISTEN status. - -Fixes: 734942cc4ea6 ("tcp: ULP infrastructure") -Reported-by: slipper -Signed-off-by: Paolo Abeni -Link: https://lore.kernel.org/r/4b80c3d1dbe3d0ab072f80450c202d9bc88b4b03.1672740602.git.pabeni@redhat.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Greg Kroah-Hartman ---- - net/ipv4/inet_connection_sock.c | 16 +++++++++++++++- - net/ipv4/tcp_ulp.c | 4 ++++ - 2 files changed, 19 insertions(+), 1 deletion(-) - ---- a/net/ipv4/inet_connection_sock.c -+++ b/net/ipv4/inet_connection_sock.c -@@ -902,11 +902,25 @@ void inet_csk_prepare_forced_close(struc - } - EXPORT_SYMBOL(inet_csk_prepare_forced_close); - -+static int inet_ulp_can_listen(const struct sock *sk) -+{ -+ const struct inet_connection_sock *icsk = inet_csk(sk); -+ -+ if (icsk->icsk_ulp_ops && !icsk->icsk_ulp_ops->clone) -+ return -EINVAL; -+ -+ return 0; -+} -+ - int inet_csk_listen_start(struct sock *sk, int backlog) - { - struct inet_connection_sock *icsk = inet_csk(sk); - struct inet_sock *inet = inet_sk(sk); -- int err = -EADDRINUSE; -+ int err; -+ -+ err = inet_ulp_can_listen(sk); -+ if (unlikely(err)) -+ return err; - - reqsk_queue_alloc(&icsk->icsk_accept_queue); - ---- a/net/ipv4/tcp_ulp.c -+++ b/net/ipv4/tcp_ulp.c -@@ -138,6 +138,10 @@ static int __tcp_set_ulp(struct sock *sk - if (icsk->icsk_ulp_ops) - goto out_err; - -+ err = -EINVAL; -+ if (!ulp_ops->clone && sk->sk_state == TCP_LISTEN) -+ goto out_err; -+ - err = ulp_ops->init(sk); - if (err) - goto out_err; diff --git a/queue-5.4/series b/queue-5.4/series index 4a921fe2c18..ef303943975 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -600,4 +600,3 @@ selftests-fix-kselftest-o-objdir-build-from-cluttering-top-level-objdir.patch selftests-set-the-build-variable-to-absolute-path.patch driver-core-fix-bus_type.match-error-handling-in-__driver_attach.patch net-sched-disallow-noqueue-for-qdisc-classes.patch -net-ulp-prevent-ulp-without-clone-op-from-entering-the-listen-status.patch -- 2.47.3