diff options
author | kan <kan@FreeBSD.org> | 2003-08-11 19:37:11 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2003-08-11 19:37:11 +0000 |
commit | 91297961f690c3baf9fe8d1a9ced652dd60162fc (patch) | |
tree | d0def6c90e137e0027feaa398e4d155870030489 /sys | |
parent | 5611986906310203b885bdbda0f340333655ade3 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 5 |
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 |