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;