summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authorgreen <green@FreeBSD.org>2000-08-29 11:28:06 +0000
committergreen <green@FreeBSD.org>2000-08-29 11:28:06 +0000
commit0fa5ae2859837ce45dfa1d212731cbed7a6bf037 (patch)
treea0487072d9e3fda944c9970116207cd67e21e923 /sys/kern/uipc_socket.c
parent0290d697a80874eccbc3e0228ae5f2acb2b7522c (diff)
downloadFreeBSD-src-0fa5ae2859837ce45dfa1d212731cbed7a6bf037.zip
FreeBSD-src-0fa5ae2859837ce45dfa1d212731cbed7a6bf037.tar.gz
Remove any possibility of hiwat-related race conditions by changing
the chgsbsize() call to use a "subject" pointer (&sb.sb_hiwat) and a u_long target to set it to. The whole thing is splnet(). This fixes a problem that jdp has been able to provoke.
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index f5f1746..7cd4ca7 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -191,10 +191,10 @@ sodealloc(so)
so->so_gencnt = ++so_gencnt;
if (so->so_rcv.sb_hiwat)
(void)chgsbsize(so->so_cred->cr_uid,
- -(rlim_t)so->so_rcv.sb_hiwat, RLIM_INFINITY);
+ &so->so_rcv.sb_hiwat, 0, RLIM_INFINITY);
if (so->so_snd.sb_hiwat)
(void)chgsbsize(so->so_cred->cr_uid,
- -(rlim_t)so->so_snd.sb_hiwat, RLIM_INFINITY);
+ &so->so_snd.sb_hiwat, 0, RLIM_INFINITY);
if (so->so_accf != NULL) {
if (so->so_accf->so_accept_filter != NULL &&
so->so_accf->so_accept_filter->accf_destroy != NULL) {
OpenPOWER on IntegriCloud