summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_syscalls.c
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2003-08-11 19:37:11 +0000
committerkan <kan@FreeBSD.org>2003-08-11 19:37:11 +0000
commit91297961f690c3baf9fe8d1a9ced652dd60162fc (patch)
treed0def6c90e137e0027feaa398e4d155870030489 /sys/kern/uipc_syscalls.c
parent5611986906310203b885bdbda0f340333655ade3 (diff)
downloadFreeBSD-src-91297961f690c3baf9fe8d1a9ced652dd60162fc.zip
FreeBSD-src-91297961f690c3baf9fe8d1a9ced652dd60162fc.tar.gz
Drop Giant in recvit before returning an error to the caller to avoid
leaking the Giant on the syscall exit.
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r--sys/kern/uipc_syscalls.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index e6f4076..c9dff02 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -942,13 +942,16 @@ recvit(td, s, mp, namelenp)
#endif
mtx_lock(&Giant);
- if ((error = fgetsock(td, s, &so, NULL)) != 0)
+ if ((error = fgetsock(td, s, &so, NULL)) != 0) {
+ mtx_unlock(&Giant);
return (error);
+ }
#ifdef MAC
error = mac_check_socket_receive(td->td_ucred, so);
if (error) {
fputsock(so);
+ mtx_unlock(&Giant);
return (error);
}
#endif
OpenPOWER on IntegriCloud