Files
linux/include/net
Paolo Abeni 419ce133ab tcp: allow again tcp_disconnect() when threads are waiting
As reported by Tom, .NET and applications build on top of it rely
on connect(AF_UNSPEC) to async cancel pending I/O operations on TCP
socket.

The blamed commit below caused a regression, as such cancellation
can now fail.

As suggested by Eric, this change addresses the problem explicitly
causing blocking I/O operation to terminate immediately (with an error)
when a concurrent disconnect() is executed.

Instead of tracking the number of threads blocked on a given socket,
track the number of disconnect() issued on such socket. If such counter
changes after a blocking operation releasing and re-acquiring the socket
lock, error out the current operation.

Fixes: 4faeee0cf8 ("tcp: deny tcp_disconnect() when threads are waiting")
Reported-by: Tom Deseyn <tdeseyn@redhat.com>
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1886305
Suggested-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/f3b95e47e3dbed840960548aebaa8d954372db41.1697008693.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2023-10-13 16:49:32 -07:00
..
2023-03-17 08:56:37 +00:00
2022-08-09 22:14:02 -07:00
2021-12-16 07:18:35 -08:00
2023-08-15 15:01:03 -07:00
2021-10-15 11:33:08 +01:00
2023-09-06 06:05:59 +01:00
2023-04-22 01:39:41 +02:00
2021-10-13 09:40:46 -07:00
2023-08-22 17:31:18 -07:00
2022-05-11 12:43:10 +01:00
2023-05-11 18:07:05 -07:00
2023-07-14 20:39:30 -07:00
2023-02-16 09:27:07 +01:00
2023-07-28 14:07:59 -07:00
2022-12-12 15:04:39 -08:00
2023-08-02 10:58:26 +01:00
2023-07-19 09:56:49 -07:00
2023-07-19 09:56:49 -07:00