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;

Reply via email to