summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/uipc_socket.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 9d3aa51..b1415d7 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1641,8 +1641,15 @@ sogetopt(so, sopt)
#endif
case SO_LINGER:
+ /*
+ * XXXRW: We grab the lock here to get a consistent
+ * snapshot of both fields. This may not really
+ * be necessary.
+ */
+ SOCK_LOCK(so);
l.l_onoff = so->so_options & SO_LINGER;
l.l_linger = so->so_linger;
+ SOCK_UNLOCK(so);
error = sooptcopyout(sopt, &l, sizeof l);
break;
OpenPOWER on IntegriCloud