summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-06-18 19:02:49 +0000
committerrwatson <rwatson@FreeBSD.org>2006-06-18 19:02:49 +0000
commit350dce4037703be35160979337f8269a9ccca96a (patch)
tree5fc4294f57d29dad17033b27993ebf330b9ec37f /sys/kern
parent374a73f6b1fd134a014f31abb87884af03f44951 (diff)
downloadFreeBSD-src-350dce4037703be35160979337f8269a9ccca96a.zip
FreeBSD-src-350dce4037703be35160979337f8269a9ccca96a.tar.gz
When retrieving SO_ERROR via getsockopt(), hold the socket lock around
the retrieval and replacement with 0. MFC after: 1 week
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_socket.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index fa91a0c..710ddd0 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -2180,8 +2180,10 @@ integer:
goto integer;
case SO_ERROR:
+ SOCK_LOCK(so);
optval = so->so_error;
so->so_error = 0;
+ SOCK_UNLOCK(so);
goto integer;
case SO_SNDBUF:
OpenPOWER on IntegriCloud