Index | Thread | Search

From:
Vitaliy Makkoveev <mvs@openbsd.org>
Subject:
Don't re-lock sockets in uipc_shutdown()
To:
tech@openbsd.org
Date:
Sat, 27 Apr 2024 16:41:53 +0300

Download raw body.

Thread
No reason to lock peer. It can't be or became listening socket, both
sockets can't be in the middle of connecting or disconnecting.

Index: sys/kern/uipc_usrreq.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_usrreq.c,v
retrieving revision 1.204
diff -u -p -r1.204 uipc_usrreq.c
--- sys/kern/uipc_usrreq.c	10 Apr 2024 12:04:41 -0000	1.204
+++ sys/kern/uipc_usrreq.c	27 Apr 2024 13:26:47 -0000
@@ -459,9 +459,9 @@ uipc_shutdown(struct socket *so)
 
 	socantsendmore(so);
 
-	if ((so2 = unp_solock_peer(unp->unp_socket))){
+	if (unp->unp_conn != NULL) {
+		so2 = unp->unp_conn->unp_socket;
 		socantrcvmore(so2);
-		sounlock(so2);
 	}
 
 	return (0);