From: Greg Kroah-Hartman Date: Fri, 10 Mar 2023 12:07:23 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v6.1.17~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ac9fb6e61db3c1a929bd8795402484542202e32;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: tcp-fix-listen-regression-in-5.15.88.patch --- diff --git a/queue-4.19/series b/queue-4.19/series index fc27afa2f1e..f0a3f72e609 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -246,3 +246,4 @@ bluetooth-hci_sock-purge-socket-queues-in-the-destruct-callback.patch s390-maccess-add-no-dat-mode-to-kernel_write.patch s390-setup-init-jump-labels-before-command-line-parsing.patch media-uvcvideo-fix-race-condition-with-usb_kill_urb.patch +tcp-fix-listen-regression-in-5.15.88.patch diff --git a/queue-4.19/tcp-fix-listen-regression-in-5.15.88.patch b/queue-4.19/tcp-fix-listen-regression-in-5.15.88.patch new file mode 100644 index 00000000000..cf7ccdfe39f --- /dev/null +++ b/queue-4.19/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 4.19.270 + +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 +@@ -934,6 +934,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);