--- /dev/null
+From fdaf88531cfd17b2a710cceb3141ef6f9085ff40 Mon Sep 17 00:00:00 2001
+From: Kuniyuki Iwashima <kuniyu@amazon.com>
+Date: Mon, 13 Feb 2023 20:45:48 +0000
+Subject: tcp: Fix listen() regression in 4.14.303.
+
+From: Kuniyuki Iwashima <kuniyu@amazon.com>
+
+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 <winter@winter.cafe>
+Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);