Module Name: src
Committed By: christos
Date: Wed Jan 25 14:04:09 UTC 2012
Modified Files:
src/sys/kern: sys_descrip.c uipc_syscalls.c
Log Message:
Add locking, requested by yamt. Note that locking is not used everywhere
for these.
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/kern/sys_descrip.c
cvs rdiff -u -r1.151 -r1.152 src/sys/kern/uipc_syscalls.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/sys_descrip.c
diff -u src/sys/kern/sys_descrip.c:1.24 src/sys/kern/sys_descrip.c:1.25
--- src/sys/kern/sys_descrip.c:1.24 Tue Jan 24 19:28:36 2012
+++ src/sys/kern/sys_descrip.c Wed Jan 25 09:04:09 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: sys_descrip.c,v 1.24 2012/01/25 00:28:36 christos Exp $ */
+/* $NetBSD: sys_descrip.c,v 1.25 2012/01/25 14:04:09 christos Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_descrip.c,v 1.24 2012/01/25 00:28:36 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_descrip.c,v 1.25 2012/01/25 14:04:09 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -409,9 +409,9 @@ sys_fcntl(struct lwp *l, const struct sy
case F_SETNOSIGPIPE:
if (SCARG(uap, arg))
- fp->f_flag |= FNOSIGPIPE;
+ atomic_or_uint(&fp->f_flag, FNOSIGPIPE);
else
- fp->f_flag &= ~FNOSIGPIPE;
+ atomic_and_uint(&fp->f_flag, ~FNOSIGPIPE);
*retval = 0;
break;
Index: src/sys/kern/uipc_syscalls.c
diff -u src/sys/kern/uipc_syscalls.c:1.151 src/sys/kern/uipc_syscalls.c:1.152
--- src/sys/kern/uipc_syscalls.c:1.151 Tue Jan 24 19:28:36 2012
+++ src/sys/kern/uipc_syscalls.c Wed Jan 25 09:04:09 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_syscalls.c,v 1.151 2012/01/25 00:28:36 christos Exp $ */
+/* $NetBSD: uipc_syscalls.c,v 1.152 2012/01/25 14:04:09 christos Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.151 2012/01/25 00:28:36 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.152 2012/01/25 14:04:09 christos Exp $");
#include "opt_pipe.h"
@@ -974,9 +974,9 @@ sys_setsockopt(struct lwp *l, const stru
error = sosetopt(so, &sopt);
if (so->so_options & SO_NOSIGPIPE)
- fp->f_flag |= FNOSIGPIPE;
+ atomic_or_uint(&fp->f_flag, FNOSIGPIPE);
else
- fp->f_flag &= ~FNOSIGPIPE;
+ atomic_and_uint(&fp->f_flag, ~FNOSIGPIPE);
out:
sockopt_destroy(&sopt);
@@ -1014,9 +1014,9 @@ sys_getsockopt(struct lwp *l, const stru
sockopt_init(&sopt, SCARG(uap, level), SCARG(uap, name), 0);
if (fp->f_flag & FNOSIGPIPE)
- so->so_options |= SO_NOSIGPIPE;
+ atomic_or_uint(&so->so_options, SO_NOSIGPIPE);
else
- so->so_options &= ~SO_NOSIGPIPE;
+ atomic_and_uint(&so->so_options, ~SO_NOSIGPIPE);
error = sogetopt(so, &sopt);
if (error)
goto out;