Index | Thread | Search

From:
Vitaliy Makkoveev <otto@bsdbox.dev>
Subject:
Re: socket shutdown shared net lock
To:
Alexander Bluhm <bluhm@openbsd.org>
Cc:
tech@openbsd.org
Date:
Tue, 18 Mar 2025 00:20:25 +0300

Download raw body.

Thread
> On 17 Mar 2025, at 23:32, Alexander Bluhm <bluhm@openbsd.org> wrote:
> 
> Hi,
> 
> Socket shutdown(2) needs only shared net lock.  TCP uses per socket
> lock for struct tcpcb.  tcp_usrclosed(), tcp_close(), soisdisconnected()
> are already MP safe.  All other internet protocols call only
> socantsendmore().
> 
> ok?
> 

ok mvs

> bluhm
> 
> Index: kern/uipc_socket.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_socket.c,v
> diff -u -p -r1.374 uipc_socket.c
> --- kern/uipc_socket.c	17 Feb 2025 08:56:33 -0000	1.374
> +++ kern/uipc_socket.c	17 Mar 2025 00:04:41 -0000
> @@ -1252,9 +1252,9 @@ soshutdown(struct socket *so, int how)
> 		sorflush(so);
> 		/* FALLTHROUGH */
> 	case SHUT_WR:
> -		solock(so);
> +		solock_shared(so);
> 		error = pru_shutdown(so);
> -		sounlock(so);
> +		sounlock_shared(so);
> 		break;
> 	default:
> 		error = EINVAL;
>