tcp: Fix listen() regression in 5.15.88.

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>
(cherry picked from commit fdaf88531cfd17b2a710cceb3141ef6f9085ff40)
Signed-off-by: Robert Kolchmeyer <rkolchmeyer@google.com>

BUG=None
TEST=presubmit
RELEASE_NOTE=Fixed a regression in the Linux kernel that caused listen()
to no longer return -EADDRINUSE.

cos-patch: bug
Change-Id: Icfc0b844d7d1ae6c8ba7033a2667cb4687c365cb
Reviewed-on: https://cos-review.googlesource.com/c/third_party/kernel/+/44717
Reviewed-by: Oleksandr Tymoshenko <ovt@google.com>
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
1 file changed