From: Greg Kroah-Hartman Date: Fri, 10 Mar 2023 12:07:13 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v6.1.17~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=451380fe13ddfc0bed1a3da890e68d061105d290;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: tcp-fix-listen-regression-in-5.15.88.patch --- diff --git a/queue-4.14/series b/queue-4.14/series index a1558666f87..b8704132c04 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -189,3 +189,4 @@ phy-rockchip-typec-fix-unsigned-comparison-with-less.patch 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 +tcp-fix-listen-regression-in-5.15.88.patch diff --git a/queue-4.14/tcp-fix-listen-regression-in-5.15.88.patch b/queue-4.14/tcp-fix-listen-regression-in-5.15.88.patch new file mode 100644 index 00000000000..e6409970e9b --- /dev/null +++ b/queue-4.14/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.14.303. + +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 +@@ -925,6 +925,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; + sk_state_store(sk, TCP_LISTEN); + if (!sk->sk_prot->get_port(sk, inet->inet_num)) { + inet->inet_sport = htons(inet->inet_num);