From: Greg Kroah-Hartman Date: Fri, 10 Mar 2023 12:07:33 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v6.1.17~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caef878274afc5a636089a65720d0284db989acb;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: tcp-fix-listen-regression-in-5.15.88.patch --- diff --git a/queue-5.4/series b/queue-5.4/series index 6f223ace33a..ef373a0b8a0 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -350,3 +350,4 @@ net-tls-avoid-hanging-tasks-on-the-tx_lock.patch x86-resctrl-apply-read_once-write_once-to-task_struct.-rmid-closid.patch x86-resctl-fix-scheduler-confusion-with-current.patch bluetooth-hci_sock-purge-socket-queues-in-the-destruct-callback.patch +tcp-fix-listen-regression-in-5.15.88.patch diff --git a/queue-5.4/tcp-fix-listen-regression-in-5.15.88.patch b/queue-5.4/tcp-fix-listen-regression-in-5.15.88.patch new file mode 100644 index 00000000000..d93efe246e8 --- /dev/null +++ b/queue-5.4/tcp-fix-listen-regression-in-5.15.88.patch @@ -0,0 +1,38 @@ +From fdaf88531cfd17b2a710cceb3141ef6f9085ff40 Mon Sep 17 00:00:00 2001 +From: Kuniyuki Iwashima +Date: Mon, 13 Feb 2023 20:45:48 +0000 +Subject: tcp: Fix listen() regression in 5.4.229. + +From: Kuniyuki Iwashima + +commit fdaf88531cfd17b2a710cceb3141ef6f9085ff40 upstream. + +When we backport dadd0dcaa67d ("net/ulp: prevent ULP without clone op from +entering the LISTEN status"), we have accidentally backported a part of +7a7160edf1bf ("net: Return errno in sk->sk_prot->get_port().") and removed +err = -EADDRINUSE in inet_csk_listen_start(). + +Thus, listen() no longer returns -EADDRINUSE even if ->get_port() failed +as reported in [0]. + +We set -EADDRINUSE to err just before ->get_port() to fix the regression. + +[0]: https://lore.kernel.org/stable/EF8A45D0-768A-4CD5-9A8A-0FA6E610ABF7@winter.cafe/ + +Reported-by: Winter +Signed-off-by: Kuniyuki Iwashima +Signed-off-by: Greg Kroah-Hartman +--- + net/ipv4/inet_connection_sock.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/net/ipv4/inet_connection_sock.c ++++ b/net/ipv4/inet_connection_sock.c +@@ -932,6 +932,7 @@ int inet_csk_listen_start(struct sock *s + * It is OK, because this socket enters to hash table only + * after validation is complete. + */ ++ err = -EADDRINUSE; + inet_sk_state_store(sk, TCP_LISTEN); + if (!sk->sk_prot->get_port(sk, inet->inet_num)) { + inet->inet_sport = htons(inet->inet_num);