git: 66c8e3fccf0c - main - socket: fix listen(2) on an already listening socket
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 30 Jun 2022 14:50:51 UTC
The branch main has been updated by glebius:
URL: https://cgit.FreeBSD.org/src/commit/?id=66c8e3fccf0c426865a917f7b1945558b12017e4
commit 66c8e3fccf0c426865a917f7b1945558b12017e4
Author: Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2022-06-30 14:50:29 +0000
Commit: Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2022-06-30 14:50:29 +0000
socket: fix listen(2) on an already listening socket
Reviewed by: markj
Differential revision: https://reviews.freebsd.org/D35669
Fixes: 141fe2dceeaeefaaffc2242c8652345a081e825a
---
sys/kern/uipc_socket.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index ffaf5acdd05d..5063ae5a56e0 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -948,8 +948,9 @@ solisten_proto_check(struct socket *so)
mtx_lock(&so->so_rcv_mtx);
/* Interlock with soo_aio_queue(). */
- if ((so->so_snd.sb_flags & (SB_AIO | SB_AIO_RUNNING)) != 0 ||
- (so->so_rcv.sb_flags & (SB_AIO | SB_AIO_RUNNING)) != 0) {
+ if (!SOLISTENING(so) &&
+ ((so->so_snd.sb_flags & (SB_AIO | SB_AIO_RUNNING)) != 0 ||
+ (so->so_rcv.sb_flags & (SB_AIO | SB_AIO_RUNNING)) != 0)) {
solisten_proto_abort(so);
return (EINVAL);
}