diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2022-01-09 05:09:22 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2022-01-15 00:51:13 +0000 |
| commit | 07d32ede469ddc85b7e92921b4a9f1eeb4dbd66f (patch) | |
| tree | 4173069cec4fa39ab7b870744d84528065f31fa9 | |
| parent | 7e61cd7995ba1b71a8c267d363ceab5b2074c28c (diff) | |
| download | src-07d32ede469ddc85b7e92921b4a9f1eeb4dbd66f.tar.gz src-07d32ede469ddc85b7e92921b4a9f1eeb4dbd66f.zip | |
libc clnt_com_create: relock rpcsoc_lock earlier when port is obtained from portmapper
PR: 261051
(cherry picked from commit 6d06bc688eb5a9f9e389b69c388d591a40edc422)
| -rw-r--r-- | lib/libc/rpc/rpc_soc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libc/rpc/rpc_soc.c b/lib/libc/rpc/rpc_soc.c index 1e5cd86d7ed4..ae23442e9a16 100644 --- a/lib/libc/rpc/rpc_soc.c +++ b/lib/libc/rpc/rpc_soc.c @@ -120,11 +120,11 @@ clnt_com_create(struct sockaddr_in *raddr, rpcprog_t prog, rpcvers_t vers, int * proto = strcmp(tp, "udp") == 0 ? IPPROTO_UDP : IPPROTO_TCP; sport = pmap_getport(raddr, (u_long)prog, (u_long)vers, proto); + mutex_lock(&rpcsoc_lock); /* pmap_getport is recursive */ if (sport == 0) { goto err; } raddr->sin_port = htons(sport); - mutex_lock(&rpcsoc_lock); /* pmap_getport is recursive */ } /* Transform sockaddr_in to netbuf */ |
