diff options
author | rwatson <rwatson@FreeBSD.org> | 2006-06-18 19:02:49 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2006-06-18 19:02:49 +0000 |
commit | 350dce4037703be35160979337f8269a9ccca96a (patch) | |
tree | 5fc4294f57d29dad17033b27993ebf330b9ec37f /sys/kern | |
parent | 374a73f6b1fd134a014f31abb87884af03f44951 (diff) | |
download | FreeBSD-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.c | 2 |
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: |