Re: CVS commit: src
On Sat, Apr 09, 2011 at 05:45:25PM +, Paul Goyette wrote: Module Name: src Committed By: pgoyette Date: Sat Apr 9 17:45:25 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/etc/mtree: NetBSD.dist.tests src/tests/lib/libc: Makefile Added Files: src/tests/lib/libc/locale: Makefile t_ctype1.c t_ctype2.c t_mbtowc.c t_wcstod.c t_wctomb.c Log Message: atf-ify the various locale tests I suppose the empty src/regress -directories should be removed as well? - Jukka.
Re: CVS commit: src
They should be removed - if you use cvs update -Pd On Sun, 10 Apr 2011, Jukka Ruohonen wrote: On Sat, Apr 09, 2011 at 05:45:25PM +, Paul Goyette wrote: Module Name:src Committed By: pgoyette Date: Sat Apr 9 17:45:25 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/etc/mtree: NetBSD.dist.tests src/tests/lib/libc: Makefile Added Files: src/tests/lib/libc/locale: Makefile t_ctype1.c t_ctype2.c t_mbtowc.c t_wcstod.c t_wctomb.c Log Message: atf-ify the various locale tests I suppose the empty src/regress -directories should be removed as well? - Jukka. !DSPAM:4da14cf82445187468586! - | Paul Goyette | PGP Key fingerprint: | E-mail addresses: | | Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com| | Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at juniper.net | | Kernel Developer | | pgoyette at netbsd.org | -
Re: CVS commit: src/sys/dev/videomode
hi christos, On Sat, Apr 09, 2011 at 04:53:39PM -0400, Christos Zoulas wrote: - use struct copy instead of memcpy i haven't looked into this specific instance, but won't gcc (at least) produce the same code for memcpy as struct copy, and the memcpy call has the (admittedly arguable) distinction of being more readable. - snprintf(%s) - strlcpy i use snprintf(%s) since it's more portable, and avoids having to indirect through autoconf HAVE_STRLCPY goo just to invoke snprintf(%s) in a stub re-implementation of strlcpy(3). feel the glibc luurrve. regards, al
Re: CVS commit: src/sys/dev/videomode
In article 20110410161417.ge4...@nef.pbox.org, Alistair Crooks a...@pkgsrc.org wrote: hi christos, On Sat, Apr 09, 2011 at 04:53:39PM -0400, Christos Zoulas wrote: - use struct copy instead of memcpy i haven't looked into this specific instance, but won't gcc (at least) produce the same code for memcpy as struct copy, and the memcpy call has the (admittedly arguable) distinction of being more readable. It is more readable, exactly. - snprintf(%s) - strlcpy i use snprintf(%s) since it's more portable, and avoids having to indirect through autoconf HAVE_STRLCPY goo just to invoke snprintf(%s) in a stub re-implementation of strlcpy(3). feel the glibc luurrve. This is a kernel device driver, and the kernel has strlcpy(3) and does not use autoconf :-) christos
Re: CVS commit: src/share/mk
On 10.04.11 23:03, Joerg Sonnenberger wrote: Module Name: src Committed By: joerg Date: Sun Apr 10 21:03:17 UTC 2011 Modified Files: src/share/mk: bsd.own.mk Log Message: Use ?: operator to determine when to add --sysroot. Unbreaks clang bootstrap. [...] -CPPFLAGS+= ${HOSTPROG:U${HOSTLIB:U${DESTDIR:D--sysroot=${DESTDIR -LDFLAGS+=${HOSTPROG:U${HOSTLIB:U${DESTDIR:D--sysroot=${DESTDIR +CPPFLAGS+= ${!defined(HOSTPROG) !defined(HOSTLIB) defined(DESTDIR) :? --sysroot=${DESTDIR} :} +LDFLAGS+=${!defined(HOSTPROG) !defined(HOSTLIB) defined(DESTDIR) :? --sysroot=${DESTDIR} :} .endif # EXTERNAL_TOOLCHAIN # } :? == ?: operator? Christoph
Re: CVS commit: src/share/mk
On Sun, Apr 10, 2011 at 11:25:50PM +0200, Christoph Egger wrote: [...] ${[...foo...] :? --sysroot=${DESTDIR} :} ^ ^ :? == ?: operator? no, see above. -- David A. Holland dholl...@netbsd.org
Re: CVS commit: src/sys
On Mon, Apr 11, 2011 at 01:33:05AM +, David A. Holland wrote: Module Name: src Committed By:dholland Date:Mon Apr 11 01:33:05 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c src/sys/nfs: nfs_serv.c nfs_srvsubs.c Log Message: kern/ZZmsg Well crap. -- David A. Holland dholl...@netbsd.org
Re: CVS commit: src/sys
On Mon, Apr 11, 2011 at 01:33:05AM +, David A. Holland wrote: Modified Files: src/sys/kern: vfs_lookup.c src/sys/nfs: nfs_serv.c nfs_srvsubs.c Log Message: kern/ZZmsg This was supposed to be: Clean up. Move some more code across from nfsd's private entry points. and I've fixed the repo. I think for the rest I'm going to revert and then redo them. -- David A. Holland dholl...@netbsd.org
Re: CVS commit: src/sys
On Mon, Apr 11, 2011 at 01:53:32AM +, David Holland wrote: I think for the rest I'm going to revert and then redo them. Because that would get me into rcsid hell, I decided not. I've fixed the repo and will reply with the right message for the archive. Sigh. at least phone stopped me before I did all 41 patches. -- David A. Holland dholl...@netbsd.org
Re: CVS commit: src/sys/kern
On Mon, Apr 11, 2011 at 01:35:00AM +, David A. Holland wrote: Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.133 -r1.134 src/sys/kern/vfs_lookup.c More cleanup. -- David A. Holland dholl...@netbsd.org
Re: CVS commit: src/sys/kern
On Mon, Apr 11, 2011 at 02:21:17AM +, David A. Holland wrote: Module Name: src Committed By:dholland Date:Mon Apr 11 02:21:17 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Update comments. ...aaand that's the last one for now. that was originally only nine patches, but the 8th had way too much crap in it (and a bug I couldn't find) so I split it up and ended up at the other extreme. -- David A. Holland dholl...@netbsd.org
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 06:11:47 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/lib/libm: Makefile Added Files: src/tests/lib/libm: t_log.c Log Message: Add a test case for PR lib/41931 reported by he@. It was verified that these fail on NetBSD 5.99.48 amd64 but pass on amd64 Linux (glibc 2.7). To generate a diff of this commit: cvs rdiff -u -r1.301 -r1.302 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libm/Makefile cvs rdiff -u -r0 -r1.1 src/tests/lib/libm/t_log.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.301 src/distrib/sets/lists/tests/mi:1.302 --- src/distrib/sets/lists/tests/mi:1.301 Sat Apr 9 17:45:25 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 06:11:47 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.301 2011/04/09 17:45:25 pgoyette Exp $ +# $NetBSD: mi,v 1.302 2011/04/10 06:11:47 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -465,6 +465,7 @@ ./usr/libdata/debug/usr/tests/lib/libm tests-lib-debug ./usr/libdata/debug/usr/tests/lib/libm/t_ceil.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libm/t_floor.debug tests-lib-debug debug,atf +./usr/libdata/debug/usr/tests/lib/libm/t_log.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libm/t_libm.debug tests-obsolete obsolete ./usr/libdata/debug/usr/tests/lib/libm/t_round.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libm/t_tanh.debug tests-lib-debug debug,atf @@ -1956,6 +1957,7 @@ ./usr/tests/lib/libm/Atffile tests-lib-tests atf ./usr/tests/lib/libm/t_ceil tests-lib-tests atf ./usr/tests/lib/libm/t_floor tests-lib-tests atf +./usr/tests/lib/libm/t_log tests-lib-tests atf ./usr/tests/lib/libm/t_libm tests-obsolete obsolete ./usr/tests/lib/libm/t_round tests-lib-tests atf ./usr/tests/lib/libm/t_tanh tests-lib-tests atf Index: src/tests/lib/libm/Makefile diff -u src/tests/lib/libm/Makefile:1.4 src/tests/lib/libm/Makefile:1.5 --- src/tests/lib/libm/Makefile:1.4 Fri Apr 8 06:49:21 2011 +++ src/tests/lib/libm/Makefile Sun Apr 10 06:11:47 2011 @@ -1,12 +1,12 @@ -# $NetBSD: Makefile,v 1.4 2011/04/08 06:49:21 jruoho Exp $ +# $NetBSD: Makefile,v 1.5 2011/04/10 06:11:47 jruoho Exp $ .include bsd.own.mk TESTSDIR= ${TESTSBASE}/lib/libm -TESTS_C+= t_ceil t_floor t_round t_tanh +TESTS_C+= t_ceil t_floor t_log t_round t_tanh -LDADD+=-lm +LDADD+= -lm COPTS+= -Wfloat-equal .include bsd.test.mk Added files: Index: src/tests/lib/libm/t_log.c diff -u /dev/null src/tests/lib/libm/t_log.c:1.1 --- /dev/null Sun Apr 10 06:11:47 2011 +++ src/tests/lib/libm/t_log.c Sun Apr 10 06:11:47 2011 @@ -0,0 +1,78 @@ +/* $NetBSD: t_log.c,v 1.1 2011/04/10 06:11:47 jruoho Exp $ */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jukka Ruohonen. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include sys/cdefs.h +__RCSID($NetBSD: t_log.c,v 1.1 2011/04/10 06:11:47 jruoho Exp $); + +#include math.h + +#include atf-c.h + +ATF_TC(log_nan); +ATF_TC_HEAD(log_nan, tc) +{ + atf_tc_set_md_var(tc, descr, Test NaN from log(3)); +} + +ATF_TC_BODY(log_nan, tc) +{ +#ifndef __vax__ + + double d; + float f; + + /* + * If the argument is negative, + * the result should be NaN and + * a domain error should follow + */ + atf_tc_expect_fail(PR lib/41931); + + d = log(-1);
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 06:27:21 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/lib/libc/gen: Makefile Added Files: src/tests/lib/libc/gen: t_getcwd.c Log Message: A naive test case for getcwd(3). To generate a diff of this commit: cvs rdiff -u -r1.302 -r1.303 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.17 -r1.18 src/tests/lib/libc/gen/Makefile cvs rdiff -u -r0 -r1.1 src/tests/lib/libc/gen/t_getcwd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.302 src/distrib/sets/lists/tests/mi:1.303 --- src/distrib/sets/lists/tests/mi:1.302 Sun Apr 10 06:11:47 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 06:27:20 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.302 2011/04/10 06:11:47 jruoho Exp $ +# $NetBSD: mi,v 1.303 2011/04/10 06:27:20 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -343,6 +343,7 @@ ./usr/libdata/debug/usr/tests/lib/libc/gen/t_basedirname.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libc/gen/t_dir.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libc/gen/t_fmtcheck.debug tests-lib-debug debug,atf +./usr/libdata/debug/usr/tests/lib/libc/gen/t_getcwd.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libc/gen/t_getgrent.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libc/gen/t_glob_star.debug tests-lib-debug debug,atf ./usr/libdata/debug/usr/tests/lib/libc/gen/t_humanize_number.debug tests-lib-debug debug,atf @@ -1744,6 +1745,7 @@ ./usr/tests/lib/libc/gen/t_basedirname tests-lib-tests atf ./usr/tests/lib/libc/gen/t_dir tests-lib-tests atf ./usr/tests/lib/libc/gen/t_fmtcheck tests-lib-tests atf +./usr/tests/lib/libc/gen/t_getcwd tests-lib-tests atf ./usr/tests/lib/libc/gen/t_getgrent tests-lib-tests atf ./usr/tests/lib/libc/gen/t_glob_star tests-lib-tests atf ./usr/tests/lib/libc/gen/t_humanize_number tests-lib-tests atf Index: src/tests/lib/libc/gen/Makefile diff -u src/tests/lib/libc/gen/Makefile:1.17 src/tests/lib/libc/gen/Makefile:1.18 --- src/tests/lib/libc/gen/Makefile:1.17 Tue Apr 5 06:15:31 2011 +++ src/tests/lib/libc/gen/Makefile Sun Apr 10 06:27:21 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.17 2011/04/05 06:15:31 jruoho Exp $ +# $NetBSD: Makefile,v 1.18 2011/04/10 06:27:21 jruoho Exp $ .include bsd.own.mk @@ -7,6 +7,7 @@ TESTS_C+= t_basedirname TESTS_C+= t_dir TESTS_C+= t_fmtcheck +TESTS_C+= t_getcwd TESTS_C+= t_getgrent TESTS_C+= t_glob_star TESTS_C+= t_humanize_number Added files: Index: src/tests/lib/libc/gen/t_getcwd.c diff -u /dev/null src/tests/lib/libc/gen/t_getcwd.c:1.1 --- /dev/null Sun Apr 10 06:27:21 2011 +++ src/tests/lib/libc/gen/t_getcwd.c Sun Apr 10 06:27:21 2011 @@ -0,0 +1,146 @@ +/* $NetBSD: t_getcwd.c,v 1.1 2011/04/10 06:27:21 jruoho Exp $ */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jukka Ruohonen. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include sys/cdefs.h +__RCSID($NetBSD: t_getcwd.c,v 1.1 2011/04/10 06:27:21 jruoho Exp $); + +#include sys/param.h +#include sys/stat.h + +#include atf-c.h +#include errno.h +#include fts.h +#include limits.h +#include string.h +#include unistd.h + +ATF_TC(getcwd_err); +ATF_TC_HEAD(getcwd_err, tc) +{ + atf_tc_set_md_var(tc, descr, Test error conditions in getcwd(3)); +} + +ATF_TC_BODY(getcwd_err, tc) +{ + char
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 08:07:42 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/include: Makefile Added Files: src/tests/include: t_types.c Log Message: Add tests for PR standards/44847 and PR standards/18067. To generate a diff of this commit: cvs rdiff -u -r1.303 -r1.304 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.2 -r1.3 src/tests/include/Makefile cvs rdiff -u -r0 -r1.1 src/tests/include/t_types.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.303 src/distrib/sets/lists/tests/mi:1.304 --- src/distrib/sets/lists/tests/mi:1.303 Sun Apr 10 06:27:20 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 08:07:41 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.303 2011/04/10 06:27:20 jruoho Exp $ +# $NetBSD: mi,v 1.304 2011/04/10 08:07:41 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -288,6 +288,7 @@ ./usr/libdata/debug/usr/tests/include/t_limits.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_paths.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_stdint.debug tests-ipf-tests debug,atf +./usr/libdata/debug/usr/tests/include/t_types.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/ipf tests-ipf-tests ./usr/libdata/debug/usr/tests/kernel tests-kernel-tests ./usr/libdata/debug/usr/tests/kernel/h_ps_strings1.debug tests-kernel-tests debug,atf @@ -1371,6 +1372,7 @@ ./usr/tests/include/t_limits tests-include-tests atf ./usr/tests/include/t_paths tests-include-tests atf ./usr/tests/include/t_stdint tests-include-tests atf +./usr/tests/include/t_types tests-include-tests atf ./usr/tests/ipf tests-ipf-tests ./usr/tests/ipf/Atffiletests-ipf-tests ./usr/tests/ipf/expected tests-ipf-tests Index: src/tests/include/Makefile diff -u src/tests/include/Makefile:1.2 src/tests/include/Makefile:1.3 --- src/tests/include/Makefile:1.2 Wed Mar 30 09:43:22 2011 +++ src/tests/include/Makefile Sun Apr 10 08:07:41 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2011/03/30 09:43:22 jruoho Exp $ +# $NetBSD: Makefile,v 1.3 2011/04/10 08:07:41 jruoho Exp $ NOMAN= # defined @@ -12,6 +12,7 @@ TESTS_C+= t_limits TESTS_C+= t_paths TESTS_C+= t_stdint +TESTS_C+= t_types FILESDIR= ${TESTSDIR} FILES= d_bitstring_27.out Added files: Index: src/tests/include/t_types.c diff -u /dev/null src/tests/include/t_types.c:1.1 --- /dev/null Sun Apr 10 08:07:42 2011 +++ src/tests/include/t_types.c Sun Apr 10 08:07:41 2011 @@ -0,0 +1,149 @@ +/* $NetBSD: t_types.c,v 1.1 2011/04/10 08:07:41 jruoho Exp $ */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jukka Ruohonen. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include sys/cdefs.h +__RCSID($NetBSD: t_types.c,v 1.1 2011/04/10 08:07:41 jruoho Exp $); + +#include sys/types.h + +#include atf-c.h +#include limits.h +#include stdint.h + +#include stdio.h + +ATF_TC(types_limits); +ATF_TC_HEAD(types_limits, tc) +{ + atf_tc_set_md_var(tc, descr, Known limits for types(3)); +} + +ATF_TC_BODY(types_limits, tc) +{ + useconds_t usec; + ssize_t size; + + /* + * IEEE Std 1003.1-2008: + * + * The type ssize_t shall be capable of storing + * values at least in the range [-1, {SSIZE_MAX}]. + * + */ + size = SSIZE_MAX; + ATF_REQUIRE(size 0); + + size = size + 1; + ATF_REQUIRE(size 0); + + /* + * IEEE Std
CVS commit: src/tests/include
Module Name:src Committed By: jruoho Date: Sun Apr 10 08:11:34 UTC 2011 Modified Files: src/tests/include: t_types.c Log Message: Fix comments. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/include/t_types.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/include/t_types.c diff -u src/tests/include/t_types.c:1.1 src/tests/include/t_types.c:1.2 --- src/tests/include/t_types.c:1.1 Sun Apr 10 08:07:41 2011 +++ src/tests/include/t_types.c Sun Apr 10 08:11:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: t_types.c,v 1.1 2011/04/10 08:07:41 jruoho Exp $ */ +/* $NetBSD: t_types.c,v 1.2 2011/04/10 08:11:34 jruoho Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include sys/cdefs.h -__RCSID($NetBSD: t_types.c,v 1.1 2011/04/10 08:07:41 jruoho Exp $); +__RCSID($NetBSD: t_types.c,v 1.2 2011/04/10 08:11:34 jruoho Exp $); #include sys/types.h @@ -66,8 +66,8 @@ /* * IEEE Std 1003.1-2008: * - * The type suseconds_t shall be a signed integer type capable - * of storing values at least in the range [-1, 100]. + * The type suseconds_t shall be a signed integer type capable + * of storing values at least in the range [-1, 100]. */ usec = 100; ATF_REQUIRE(usec 0); @@ -131,7 +131,7 @@ ATF_REQUIRE((size - 1) 0); /* - * Test also rlim_; PR standards/18067. + * Test also rlim_t; PR standards/18067. */ lim = 0;
CVS commit: src
Module Name:src Committed By: plunky Date: Sun Apr 10 08:29:32 UTC 2011 Modified Files: src: UPDATING Log Message: Building the Xorg binary was moved into a subdirectory to fix ordering issues with make all. It may be necessary to remove the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 if your update build fails, as the Xorg entry there is now a directory. To generate a diff of this commit: cvs rdiff -u -r1.221 -r1.222 src/UPDATING Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/UPDATING diff -u src/UPDATING:1.221 src/UPDATING:1.222 --- src/UPDATING:1.221 Sun Jan 23 23:40:37 2011 +++ src/UPDATING Sun Apr 10 08:29:31 2011 @@ -1,4 +1,4 @@ -$NetBSD: UPDATING,v 1.221 2011/01/23 23:40:37 lukem Exp $ +$NetBSD: UPDATING,v 1.222 2011/04/10 08:29:31 plunky Exp $ This file (UPDATING) is intended to be a brief reference to recent changes that might cause problems in the build process, and a guide for @@ -15,6 +15,13 @@ Recent changes: ^^^ +20110328: + Building the Xorg binary was moved into a subdirectory to fix + ordering issues with make all. It may be necessary to remove + the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 + if your update build fails, as the Xorg entry there is now a + directory. + 20110121: Assembler files no longer use -traditional-cpp. This can break the build of individual parts of the tree. This is handled
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 08:35:48 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/include: Makefile Added Files: src/tests/include: t_glob.c Log Message: Verify that PR standards/21401 is no longer an issue. To generate a diff of this commit: cvs rdiff -u -r1.304 -r1.305 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.3 -r1.4 src/tests/include/Makefile cvs rdiff -u -r0 -r1.1 src/tests/include/t_glob.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.304 src/distrib/sets/lists/tests/mi:1.305 --- src/distrib/sets/lists/tests/mi:1.304 Sun Apr 10 08:07:41 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 08:35:47 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.304 2011/04/10 08:07:41 jruoho Exp $ +# $NetBSD: mi,v 1.305 2011/04/10 08:35:47 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -284,6 +284,7 @@ ./usr/libdata/debug/usr/tests/include/sys/t_bitops.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/sys/t_bootblock.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_bitstring.debug tests-ipf-tests debug,atf +./usr/libdata/debug/usr/tests/include/t_glob.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_inttypes.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_limits.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_paths.debug tests-ipf-tests debug,atf @@ -1368,6 +1369,7 @@ ./usr/tests/include/sys/t_bitops tests-include-tests atf ./usr/tests/include/sys/t_bootblock tests-include-tests atf ./usr/tests/include/t_bitstring tests-include-tests atf +./usr/tests/include/t_glob tests-include-tests atf ./usr/tests/include/t_inttypes tests-include-tests atf ./usr/tests/include/t_limits tests-include-tests atf ./usr/tests/include/t_paths tests-include-tests atf Index: src/tests/include/Makefile diff -u src/tests/include/Makefile:1.3 src/tests/include/Makefile:1.4 --- src/tests/include/Makefile:1.3 Sun Apr 10 08:07:41 2011 +++ src/tests/include/Makefile Sun Apr 10 08:35:48 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.3 2011/04/10 08:07:41 jruoho Exp $ +# $NetBSD: Makefile,v 1.4 2011/04/10 08:35:48 jruoho Exp $ NOMAN= # defined @@ -8,6 +8,7 @@ TESTS_SUBDIRS= sys TESTS_C= t_bitstring +TESTS_C+= t_glob TESTS_C+= t_inttypes TESTS_C+= t_limits TESTS_C+= t_paths Added files: Index: src/tests/include/t_glob.c diff -u /dev/null src/tests/include/t_glob.c:1.1 --- /dev/null Sun Apr 10 08:35:48 2011 +++ src/tests/include/t_glob.c Sun Apr 10 08:35:48 2011 @@ -0,0 +1,75 @@ +/* $NetBSD: t_glob.c,v 1.1 2011/04/10 08:35:48 jruoho Exp $ */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jukka Ruohonen. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include sys/cdefs.h +__RCSID($NetBSD: t_glob.c,v 1.1 2011/04/10 08:35:48 jruoho Exp $); + +#include atf-c.h +#include glob.h +#include string.h + +ATF_TC(glob_types); +ATF_TC_HEAD(glob_types, tc) +{ + atf_tc_set_md_var(tc, descr, Test glob(3) types); +} + +ATF_TC_BODY(glob_types, tc) +{ + glob_t g; + + /* + * IEEE Std 1003.1-2008: + * + * The glob.h header shall define the glob_t structure type, + * which shall include at least the following members: + * + *size_t gl_pathc Count of paths matched by pattern. + *char **gl_pathv Pointer
CVS commit: src/etc/mtree
Module Name:src Committed By: blymn Date: Sun Apr 10 09:45:59 UTC 2011 Modified Files: src/etc/mtree: NetBSD.dist.tests Log Message: Add libcurses to tests. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.37 src/etc/mtree/NetBSD.dist.tests Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/etc/mtree/NetBSD.dist.tests diff -u src/etc/mtree/NetBSD.dist.tests:1.36 src/etc/mtree/NetBSD.dist.tests:1.37 --- src/etc/mtree/NetBSD.dist.tests:1.36 Sat Apr 9 17:45:24 2011 +++ src/etc/mtree/NetBSD.dist.tests Sun Apr 10 09:45:59 2011 @@ -1,4 +1,4 @@ -# $NetBSD: NetBSD.dist.tests,v 1.36 2011/04/09 17:45:24 pgoyette Exp $ +# $NetBSD: NetBSD.dist.tests,v 1.37 2011/04/10 09:45:59 blymn Exp $ ./usr/libdata/debug/usr/tests ./usr/libdata/debug/usr/tests/atf @@ -184,6 +184,9 @@ ./usr/tests/lib/libc/tls ./usr/tests/lib/libc/ttyio ./usr/tests/lib/libc/time +./usr/tests/lib/libcurses +./usr/tests/lib/libcurses/check_files +./usr/tests/lib/libcurses/tests ./usr/tests/lib/libdes ./usr/tests/lib/semaphore ./usr/tests/lib/semaphore/pthread
CVS commit: src/distrib/sets/lists/tests
Module Name:src Committed By: blymn Date: Sun Apr 10 09:47:43 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi Log Message: Add libcurses tests To generate a diff of this commit: cvs rdiff -u -r1.305 -r1.306 src/distrib/sets/lists/tests/mi Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.305 src/distrib/sets/lists/tests/mi:1.306 --- src/distrib/sets/lists/tests/mi:1.305 Sun Apr 10 08:35:47 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 09:47:43 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.305 2011/04/10 08:35:47 jruoho Exp $ +# $NetBSD: mi,v 1.306 2011/04/10 09:47:43 blymn Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -1944,6 +1944,105 @@ ./usr/tests/lib/libc/t_servent tests-obsolete obsolete ./usr/tests/lib/libc/t_strptime tests-obsolete obsolete ./usr/tests/lib/libc/time tests-lib-tests +./usr/tests/lib/libcurses tests-lib-tests +./usr/tests/lib/libcurses/.terminfo.db tests-lib-tests atf +./usr/tests/lib/libcurses/Atffile tests-lib-tests atf +./usr/tests/lib/libcurses/check_files tests-lib-tests +./usr/tests/lib/libcurses/check_files/addch.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/addchstr.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/addstr.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/attributes.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/background1.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/background2.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/background3.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/background4.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/background5.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/bell.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/box_standout.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/chgat1.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/chgat2.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/chgat3.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear1.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear10.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear2.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear3.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear4.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear5.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear6.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear7.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear8.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/clear9.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_blank_draw.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_blue_back.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_default.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_red_fore.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_set.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/color_start.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin1.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin10.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin11.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin12.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin13.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin14.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin2.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin3.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin4.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin5.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin6.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin7.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin8.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/copywin9.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/curs_set1.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/curs_set2.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/curs_set3.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/curses_start.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/fill.chk tests-lib-tests atf +./usr/tests/lib/libcurses/check_files/home.chk tests-lib-tests atf
CVS commit: src/tests/lib
Module Name:src Committed By: blymn Date: Sun Apr 10 09:49:13 UTC 2011 Modified Files: src/tests/lib: Makefile Log Message: Add libcurses test To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/tests/lib/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/lib/Makefile diff -u src/tests/lib/Makefile:1.13 src/tests/lib/Makefile:1.14 --- src/tests/lib/Makefile:1.13 Thu Apr 7 06:24:07 2011 +++ src/tests/lib/Makefile Sun Apr 10 09:49:13 2011 @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.13 2011/04/07 06:24:07 plunky Exp $ +# $NetBSD: Makefile,v 1.14 2011/04/10 09:49:13 blymn Exp $ .include bsd.own.mk -TESTS_SUBDIRS= csu libbluetooth libc libevent libm \ +TESTS_SUBDIRS= csu libbluetooth libc libcurses libevent libm \ libobjc libposix libprop libpthread \ librt librumpclient librumphijack libutil semaphore
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 09:58:01 UTC 2011 Modified Files: src/distrib/sets/lists/comp: mi src/share/man/man3: Makefile Added Files: src/share/man/man3: unistd.3 Log Message: Add a small summary page for unistd.h. To generate a diff of this commit: cvs rdiff -u -r1.1612 -r1.1613 src/distrib/sets/lists/comp/mi cvs rdiff -u -r1.73 -r1.74 src/share/man/man3/Makefile cvs rdiff -u -r0 -r1.1 src/share/man/man3/unistd.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/comp/mi diff -u src/distrib/sets/lists/comp/mi:1.1612 src/distrib/sets/lists/comp/mi:1.1613 --- src/distrib/sets/lists/comp/mi:1.1612 Fri Apr 8 08:36:33 2011 +++ src/distrib/sets/lists/comp/mi Sun Apr 10 09:58:00 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1612 2011/04/08 08:36:33 jruoho Exp $ +# $NetBSD: mi,v 1.1613 2011/04/10 09:58:00 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -8644,6 +8644,7 @@ ./usr/share/man/cat3/ungetc.0 comp-c-catman .cat ./usr/share/man/cat3/ungetch.0 comp-c-catman .cat ./usr/share/man/cat3/ungetwc.0 comp-c-catman .cat +./usr/share/man/cat3/unistd.0 comp-c-catman .cat ./usr/share/man/cat3/unlockpt.0 comp-c-catman .cat ./usr/share/man/cat3/unpost_form.0 comp-c-catman .cat ./usr/share/man/cat3/unsetenv.0 comp-c-catman .cat @@ -14650,6 +14651,7 @@ ./usr/share/man/html3/ungetc.html comp-c-htmlman html ./usr/share/man/html3/ungetch.html comp-c-htmlman html ./usr/share/man/html3/ungetwc.html comp-c-htmlman html +./usr/share/man/html3/unistd.html comp-c-htmlman html ./usr/share/man/html3/unlockpt.html comp-c-htmlman html ./usr/share/man/html3/unpost_form.html comp-c-htmlman html ./usr/share/man/html3/unsetenv.html comp-c-htmlman html @@ -20724,6 +20726,7 @@ ./usr/share/man/man3/ungetc.3 comp-c-man .man ./usr/share/man/man3/ungetch.3 comp-c-man .man ./usr/share/man/man3/ungetwc.3 comp-c-man .man +./usr/share/man/man3/unistd.3 comp-c-man .man ./usr/share/man/man3/unlockpt.3 comp-c-man .man ./usr/share/man/man3/unpost_form.3 comp-c-man .man ./usr/share/man/man3/unsetenv.3 comp-c-man .man Index: src/share/man/man3/Makefile diff -u src/share/man/man3/Makefile:1.73 src/share/man/man3/Makefile:1.74 --- src/share/man/man3/Makefile:1.73 Fri Apr 8 08:36:34 2011 +++ src/share/man/man3/Makefile Sun Apr 10 09:58:01 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.73 2011/04/08 08:36:34 jruoho Exp $ +# $NetBSD: Makefile,v 1.74 2011/04/10 09:58:01 jruoho Exp $ # @(#)Makefile 8.2 (Berkeley) 12/13/93 MAN= _DIAGASSERT.3 __CONCAT.3 __UNCONST.3 CMSG_DATA.3 \ @@ -12,7 +12,8 @@ ilog2.3 intro.3 inttypes.3 iso646.3 \ makedev.3 offsetof.3 param.3 paths.3 queue.3 rbtree.3 sigevent.3 \ stdarg.3 stdbool.3 stddef.3 stdint.3 stdlib.3 sysexits.3 \ - tgmath.3 timeradd.3 timeval.3 tree.3 typeof.3 types.3 varargs.3 + tgmath.3 timeradd.3 timeval.3 tree.3 typeof.3 types.3 \ + unistd.3 varargs.3 USETBL= # used by queue.3 Added files: Index: src/share/man/man3/unistd.3 diff -u /dev/null src/share/man/man3/unistd.3:1.1 --- /dev/null Sun Apr 10 09:58:01 2011 +++ src/share/man/man3/unistd.3 Sun Apr 10 09:58:01 2011 @@ -0,0 +1,107 @@ +.\ $NetBSD: unistd.3,v 1.1 2011/04/10 09:58:01 jruoho Exp $ +.\ +.\ Copyright (c) 2011 Jukka Ruohonen jruoho...@iki.fi +.\ All rights reserved. +.\ +.\ Redistribution and use in source and binary forms, with or without +.\ modification, are permitted provided that the following conditions +.\ are met: +.\ 1. Redistributions of source code must retain the above copyright +.\notice, this list of conditions and the following disclaimer. +.\ 2. Redistributions in binary form must reproduce the above copyright +.\notice, this list of conditions and the following disclaimer in the +.\documentation and/or other materials provided with the distribution. +.\ +.\ THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\ POSSIBILITY OF SUCH DAMAGE. +.\ +.Dd April 10, 2011 +.Dt UNISTD 3 +.Os +.Sh NAME +.Nm unistd +.Nd standard symbolic constants and types +.Sh SYNOPSIS +.In unistd.h +.Sh DESCRIPTION +The +.In unistd.h +header
CVS commit: src/share/man/man3
Module Name:src Committed By: wiz Date: Sun Apr 10 10:01:07 UTC 2011 Modified Files: src/share/man/man3: unistd.3 Log Message: Fix some xrefs. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/share/man/man3/unistd.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/share/man/man3/unistd.3 diff -u src/share/man/man3/unistd.3:1.1 src/share/man/man3/unistd.3:1.2 --- src/share/man/man3/unistd.3:1.1 Sun Apr 10 09:58:01 2011 +++ src/share/man/man3/unistd.3 Sun Apr 10 10:01:06 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: unistd.3,v 1.1 2011/04/10 09:58:01 jruoho Exp $ +.\ $NetBSD: unistd.3,v 1.2 2011/04/10 10:01:06 wiz Exp $ .\ .\ Copyright (c) 2011 Jukka Ruohonen jruoho...@iki.fi .\ All rights reserved. @@ -56,11 +56,11 @@ Various limits and other symbolic constants described in .Xr pathconf 2 and -.Xr sysconf 2 . +.Xr sysconf 3 . .It Prototypes for several important system calls such as -.Xr alarm 2 , -.Xr execl 2 , +.Xr alarm 3 , +.Xr execl 3 , .Xr fork 2 , .Xr link 2 , .Xr pipe 2 ,
CVS commit: src/share/man/man3
Module Name:src Committed By: jruoho Date: Sun Apr 10 10:02:34 UTC 2011 Modified Files: src/share/man/man3: param.3 stddef.3 stdint.3 stdlib.3 types.3 Log Message: Xref unistd(3). To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/share/man/man3/param.3 cvs rdiff -u -r1.7 -r1.8 src/share/man/man3/stddef.3 cvs rdiff -u -r1.4 -r1.5 src/share/man/man3/stdint.3 cvs rdiff -u -r1.2 -r1.3 src/share/man/man3/stdlib.3 cvs rdiff -u -r1.5 -r1.6 src/share/man/man3/types.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/share/man/man3/param.3 diff -u src/share/man/man3/param.3:1.3 src/share/man/man3/param.3:1.4 --- src/share/man/man3/param.3:1.3 Fri Apr 8 08:40:05 2011 +++ src/share/man/man3/param.3 Sun Apr 10 10:02:34 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: param.3,v 1.3 2011/04/08 08:40:05 jruoho Exp $ +.\ $NetBSD: param.3,v 1.4 2011/04/10 10:02:34 jruoho Exp $ .\ .\ Copyright (c) 2011 Jukka Ruohonen jruoho...@iki.fi .\ All rights reserved. @@ -24,7 +24,7 @@ .\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\ POSSIBILITY OF SUCH DAMAGE. .\ -.Dd April 8, 2011 +.Dd April 10, 2011 .Dt PARAM 3 .Os .Sh NAME @@ -92,7 +92,8 @@ .Sh SEE ALSO .Xr bitops 3 , .Xr cdefs 3 , -.Xr types 3 +.Xr types 3 , +.Xr unistd 3 .Sh HISTORY A .In param.h Index: src/share/man/man3/stddef.3 diff -u src/share/man/man3/stddef.3:1.7 src/share/man/man3/stddef.3:1.8 --- src/share/man/man3/stddef.3:1.7 Fri May 14 02:45:39 2010 +++ src/share/man/man3/stddef.3 Sun Apr 10 10:02:34 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: stddef.3,v 1.7 2010/05/14 02:45:39 joerg Exp $ +.\ $NetBSD: stddef.3,v 1.8 2011/04/10 10:02:34 jruoho Exp $ .\ .\ Copyright (c) 2010 The NetBSD Foundation, Inc. .\ All rights reserved. @@ -27,7 +27,7 @@ .\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\ POSSIBILITY OF SUCH DAMAGE. .\ -.Dd March 21, 2010 +.Dd April 10, 2011 .Dt STDDEF 3 .Os .Sh NAME @@ -67,7 +67,8 @@ Some of the described types and macros may appear also in other headers. .Sh SEE ALSO .Xr offsetof 3 , -.Xr stdlib 3 +.Xr stdlib 3 , +.Xr unistd 3 .Sh STANDARDS As described here, the .In stddef.h Index: src/share/man/man3/stdint.3 diff -u src/share/man/man3/stdint.3:1.4 src/share/man/man3/stdint.3:1.5 --- src/share/man/man3/stdint.3:1.4 Sun Mar 21 19:42:51 2010 +++ src/share/man/man3/stdint.3 Sun Apr 10 10:02:34 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: stdint.3,v 1.4 2010/03/21 19:42:51 jruoho Exp $ +.\ $NetBSD: stdint.3,v 1.5 2011/04/10 10:02:34 jruoho Exp $ .\ .\ Copyright (c) 2002 Mike Barcroft m...@freebsd.org .\ All rights reserved. @@ -26,7 +26,7 @@ .\ .\ $FreeBSD: src/share/man/man7/stdint.7,v 1.5 2003/09/08 19:57:21 ru Exp $ .\ -.Dd March 20, 2010 +.Dd April 10, 2011 .Dt STDINT 3 .Os .Sh NAME @@ -122,7 +122,8 @@ .Vt void . .Sh SEE ALSO .Xr inttypes 3 , -.Xr stdbool 3 +.Xr stdbool 3 , +.Xr unistd 3 .Sh STANDARDS The .In stdint.h Index: src/share/man/man3/stdlib.3 diff -u src/share/man/man3/stdlib.3:1.2 src/share/man/man3/stdlib.3:1.3 --- src/share/man/man3/stdlib.3:1.2 Fri May 14 02:45:39 2010 +++ src/share/man/man3/stdlib.3 Sun Apr 10 10:02:34 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: stdlib.3,v 1.2 2010/05/14 02:45:39 joerg Exp $ +.\ $NetBSD: stdlib.3,v 1.3 2011/04/10 10:02:34 jruoho Exp $ .\ .\ Copyright (c) 2010 The NetBSD Foundation, Inc. .\ All rights reserved. @@ -27,7 +27,7 @@ .\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\ POSSIBILITY OF SUCH DAMAGE. .\ -.Dd March 25, 2010 +.Dd April 10, 2011 .Dt STDLIB 3 .Os .Sh NAME @@ -93,7 +93,9 @@ and .Xr strtol 3 . .Sh SEE ALSO -.Xr stddef 3 +.Xr stddef 3 , +.Xr types 3 , +.Xr unistd 3 .Sh STANDARDS As described here, the .In stdlib.h Index: src/share/man/man3/types.3 diff -u src/share/man/man3/types.3:1.5 src/share/man/man3/types.3:1.6 --- src/share/man/man3/types.3:1.5 Fri Apr 8 07:55:04 2011 +++ src/share/man/man3/types.3 Sun Apr 10 10:02:34 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: types.3,v 1.5 2011/04/08 07:55:04 jruoho Exp $ +.\ $NetBSD: types.3,v 1.6 2011/04/10 10:02:34 jruoho Exp $ .\ .\ Copyright (c) 2010 The NetBSD Foundation, Inc. .\ All rights reserved. @@ -56,7 +56,7 @@ .\ .\ @(#)types.5 8.1 (Berkeley) 6/5/93 .\ -.Dd April 8, 2011 +.Dd April 10, 2011 .Dt TYPES 3 .Os .Sh NAME @@ -207,7 +207,8 @@ .Xr stdbool 3 , .Xr stddef 3 , .Xr stdint 3 , -.Xr stdlib 3 +.Xr stdlib 3 , +.Xr unistd 3 .Sh STANDARDS The .In sys/types.h
CVS commit: src/tests/lib/libc/stdlib
Module Name:src Committed By: jruoho Date: Sun Apr 10 10:23:45 UTC 2011 Modified Files: src/tests/lib/libc/stdlib: t_strtod.c Log Message: Currently known failures affect only amd64; adjust atf_tc_expect_fail(). To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libc/stdlib/t_strtod.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/lib/libc/stdlib/t_strtod.c diff -u src/tests/lib/libc/stdlib/t_strtod.c:1.4 src/tests/lib/libc/stdlib/t_strtod.c:1.5 --- src/tests/lib/libc/stdlib/t_strtod.c:1.4 Fri Apr 8 06:37:51 2011 +++ src/tests/lib/libc/stdlib/t_strtod.c Sun Apr 10 10:23:45 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: t_strtod.c,v 1.4 2011/04/08 06:37:51 jruoho Exp $ */ +/* $NetBSD: t_strtod.c,v 1.5 2011/04/10 10:23:45 jruoho Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -32,15 +32,17 @@ /* Public domain, Otto Moerbeek o...@drijf.net, 2006. */ #include sys/cdefs.h -__RCSID($NetBSD: t_strtod.c,v 1.4 2011/04/08 06:37:51 jruoho Exp $); +__RCSID($NetBSD: t_strtod.c,v 1.5 2011/04/10 10:23:45 jruoho Exp $); -#include atf-c.h #include errno.h #include math.h #include stdio.h #include stdlib.h #include string.h +#include atf-c.h +#include atf-c/config.h + ATF_TC(strtod_basic); ATF_TC_HEAD(strtod_basic, tc) { @@ -102,17 +104,20 @@ ATF_TC_BODY(strtod_inf, tc) { +#ifndef __vax__ + + const char *m_arch; long double ld; double d; float f; - d = 0.0; - f = 0.0; - ld = 0.0; + m_arch = atf_config_get(atf_arch); -#ifndef __vax__ + if (strcmp(m_arch, x86_64) == 0) + atf_tc_expect_fail(PR lib/33262); - atf_tc_expect_fail(PR lib/33262); + if (system(cpuctl identify 0 | grep -q QEMU) == 0) + atf_tc_expect_fail(PR lib/33262); d = strtod(INF, NULL); ATF_REQUIRE(isinf(d) != 0);
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 10:49:44 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/include: Makefile Added Files: src/tests/include: t_netdb.c Log Message: Formally verify PR standards/44777. To generate a diff of this commit: cvs rdiff -u -r1.306 -r1.307 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.4 -r1.5 src/tests/include/Makefile cvs rdiff -u -r0 -r1.1 src/tests/include/t_netdb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.306 src/distrib/sets/lists/tests/mi:1.307 --- src/distrib/sets/lists/tests/mi:1.306 Sun Apr 10 09:47:43 2011 +++ src/distrib/sets/lists/tests/mi Sun Apr 10 10:49:43 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.306 2011/04/10 09:47:43 blymn Exp $ +# $NetBSD: mi,v 1.307 2011/04/10 10:49:43 jruoho Exp $ # # Note: don't delete entries from here - mark them as obsolete instead. # @@ -287,6 +287,7 @@ ./usr/libdata/debug/usr/tests/include/t_glob.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_inttypes.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_limits.debug tests-ipf-tests debug,atf +./usr/libdata/debug/usr/tests/include/t_netdb.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_paths.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_stdint.debug tests-ipf-tests debug,atf ./usr/libdata/debug/usr/tests/include/t_types.debug tests-ipf-tests debug,atf @@ -1372,6 +1373,7 @@ ./usr/tests/include/t_glob tests-include-tests atf ./usr/tests/include/t_inttypes tests-include-tests atf ./usr/tests/include/t_limits tests-include-tests atf +./usr/tests/include/t_netdb tests-include-tests atf ./usr/tests/include/t_paths tests-include-tests atf ./usr/tests/include/t_stdint tests-include-tests atf ./usr/tests/include/t_types tests-include-tests atf Index: src/tests/include/Makefile diff -u src/tests/include/Makefile:1.4 src/tests/include/Makefile:1.5 --- src/tests/include/Makefile:1.4 Sun Apr 10 08:35:48 2011 +++ src/tests/include/Makefile Sun Apr 10 10:49:44 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.4 2011/04/10 08:35:48 jruoho Exp $ +# $NetBSD: Makefile,v 1.5 2011/04/10 10:49:44 jruoho Exp $ NOMAN= # defined @@ -11,6 +11,7 @@ TESTS_C+= t_glob TESTS_C+= t_inttypes TESTS_C+= t_limits +TESTS_C+= t_netdb TESTS_C+= t_paths TESTS_C+= t_stdint TESTS_C+= t_types Added files: Index: src/tests/include/t_netdb.c diff -u /dev/null src/tests/include/t_netdb.c:1.1 --- /dev/null Sun Apr 10 10:49:44 2011 +++ src/tests/include/t_netdb.c Sun Apr 10 10:49:44 2011 @@ -0,0 +1,244 @@ +/* $NetBSD: t_netdb.c,v 1.1 2011/04/10 10:49:44 jruoho Exp $ */ + +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jukka Ruohonen. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include sys/cdefs.h +__RCSID($NetBSD: t_netdb.c,v 1.1 2011/04/10 10:49:44 jruoho Exp $); + +#include atf-c.h +#include netdb.h + +ATF_TC(netdb_constants); +ATF_TC_HEAD(netdb_constants, tc) +{ + atf_tc_set_md_var(tc, descr, Test constants in netdb.h); +} + +ATF_TC_BODY(netdb_constants, tc) +{ + bool fail; + + /* + * The following definitions should be available + * according to IEEE Std 1003.1-2008, issue 7. + */ + atf_tc_expect_fail(PR standards/44777); + + fail = true; + +#ifdef AI_PASSIVE + fail = false; +#endif + if (fail != false) + atf_tc_fail(AI_PASSIVE not defined);
CVS commit: src/sys/dev/nand
Module Name:src Committed By: ahoka Date: Sun Apr 10 10:56:37 UTC 2011 Modified Files: src/sys/dev/nand: nandemulator.c Log Message: Add some KASSERTs and a few more debug printf To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/dev/nand/nandemulator.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/dev/nand/nandemulator.c diff -u src/sys/dev/nand/nandemulator.c:1.2 src/sys/dev/nand/nandemulator.c:1.3 --- src/sys/dev/nand/nandemulator.c:1.2 Sun Mar 27 13:33:04 2011 +++ src/sys/dev/nand/nandemulator.c Sun Apr 10 10:56:37 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: nandemulator.c,v 1.2 2011/03/27 13:33:04 ahoka Exp $ */ +/* $NetBSD: nandemulator.c,v 1.3 2011/04/10 10:56:37 ahoka Exp $ */ /*- * Copyright (c) 2011 Department of Software Engineering, @@ -32,7 +32,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: nandemulator.c,v 1.2 2011/03/27 13:33:04 ahoka Exp $); +__KERNEL_RCSID(0, $NetBSD: nandemulator.c,v 1.3 2011/04/10 10:56:37 ahoka Exp $); #include sys/param.h #include sys/device.h @@ -306,6 +306,8 @@ { struct nandemulator_softc *sc = device_private(self); + DPRINTF((device reset\n)); + sc-sc_command = 0; sc-sc_register_writable = false; sc-sc_io_len = 0; @@ -321,6 +323,9 @@ { struct nandemulator_softc *sc = device_private(self); size_t page, offset; + + KASSERT(sc-sc_address_counter == + sc-sc_column_cycles + sc-sc_row_cycles); if (sc-sc_address_counter != sc-sc_column_cycles + sc-sc_row_cycles) { @@ -337,6 +342,8 @@ (uintmax_t )page, (uintmax_t )offset)); + KASSERT(offset sc-sc_device_size); + if (offset = sc-sc_device_size) { aprint_error_dev(self, address device size!\n); sc-sc_io_len = 0; @@ -400,6 +407,8 @@ KASSERT(offset % (sc-sc_block_size * sc-sc_page_size) == 0); + KASSERT(offset sc-sc_device_size); + if (offset = sc-sc_device_size) { aprint_error_dev(self, address device size!\n); } else { @@ -423,6 +432,7 @@ default: aprint_error_dev(self, invalid nand command (0x%hhx)\n, command); + KASSERT(false); sc-sc_io_len = 0; } }; @@ -432,6 +442,8 @@ { struct nandemulator_softc *sc = device_private(self); + DPRINTF((nandemulator_address: %hhx\n, address)); + /** * we have to handle read id/parameter page here, * as we can read right after giving the address. @@ -497,6 +509,8 @@ { struct nandemulator_softc *sc = device_private(self); + KASSERT(sc-sc_io_len 0); + if (sc-sc_io_len 0) { *data = *sc-sc_io_pointer; @@ -513,12 +527,16 @@ { struct nandemulator_softc *sc = device_private(self); + KASSERT(sc-sc_register_writable); + if (!sc-sc_register_writable) { aprint_error_dev(self, trying to write read only location without effect\n); return; } + KASSERT(sc-sc_io_len 0); + if (sc-sc_io_len 0) { *sc-sc_io_pointer = data; @@ -534,12 +552,16 @@ { struct nandemulator_softc *sc = device_private(self); + KASSERT(sc-sc_buswidth == NANDEMULATOR_16BIT); + if (sc-sc_buswidth != NANDEMULATOR_16BIT) { aprint_error_dev(self, trying to read a word on an 8bit chip\n); return; } + KASSERT(sc-sc_io_len 1); + if (sc-sc_io_len 1) { *data = *(uint16_t *)sc-sc_io_pointer; @@ -556,18 +578,24 @@ { struct nandemulator_softc *sc = device_private(self); + KASSERT(sc-sc_register_writable); + if (!sc-sc_register_writable) { aprint_error_dev(self, trying to write read only location without effect\n); return; } + KASSERT(sc-sc_buswidth == NANDEMULATOR_16BIT); + if (sc-sc_buswidth != NANDEMULATOR_16BIT) { aprint_error_dev(self, trying to write a word to an 8bit chip); return; } + KASSERT(sc-sc_io_len 1); + if (sc-sc_io_len 1) { *(uint16_t *)sc-sc_io_pointer = data;
CVS commit: src/tests/lib/libc/gen
Module Name:src Committed By: jruoho Date: Sun Apr 10 10:59:13 UTC 2011 Modified Files: src/tests/lib/libc/gen: t_nice.c Log Message: wrong return value - wrong errno. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/tests/lib/libc/gen/t_nice.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/lib/libc/gen/t_nice.c diff -u src/tests/lib/libc/gen/t_nice.c:1.3 src/tests/lib/libc/gen/t_nice.c:1.4 --- src/tests/lib/libc/gen/t_nice.c:1.3 Wed Apr 6 08:47:55 2011 +++ src/tests/lib/libc/gen/t_nice.c Sun Apr 10 10:59:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: t_nice.c,v 1.3 2011/04/06 08:47:55 jruoho Exp $ */ +/* $NetBSD: t_nice.c,v 1.4 2011/04/10 10:59:13 jruoho Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include sys/cdefs.h -__RCSID($NetBSD: t_nice.c,v 1.3 2011/04/06 08:47:55 jruoho Exp $); +__RCSID($NetBSD: t_nice.c,v 1.4 2011/04/10 10:59:13 jruoho Exp $); #include sys/resource.h #include sys/wait.h @@ -66,7 +66,7 @@ ATF_REQUIRE(nice(i) == -1); if (errno != EPERM) - atf_tc_fail(wrong return value); + atf_tc_fail(wrong errno); } }
CVS commit: src/tests/net/if_loop
Module Name:src Committed By: martin Date: Sun Apr 10 11:31:48 UTC 2011 Modified Files: src/tests/net/if_loop: t_pr.c Log Message: Repeat the fragmentation on lo0 test, but with checksum on IFF_LOOPBACK interfaces enabled. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/net/if_loop/t_pr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/net/if_loop/t_pr.c diff -u src/tests/net/if_loop/t_pr.c:1.4 src/tests/net/if_loop/t_pr.c:1.5 --- src/tests/net/if_loop/t_pr.c:1.4 Sat Apr 9 20:42:12 2011 +++ src/tests/net/if_loop/t_pr.c Sun Apr 10 11:31:48 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: t_pr.c,v 1.4 2011/04/09 20:42:12 martin Exp $ */ +/* $NetBSD: t_pr.c,v 1.5 2011/04/10 11:31:48 martin Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -29,11 +29,12 @@ #include sys/cdefs.h #ifndef lint -__RCSID($NetBSD: t_pr.c,v 1.4 2011/04/09 20:42:12 martin Exp $); +__RCSID($NetBSD: t_pr.c,v 1.5 2011/04/10 11:31:48 martin Exp $); #endif /* not lint */ #include sys/types.h #include sys/socket.h +#include sys/sysctl.h #include netinet/in.h #include net/route.h @@ -51,15 +52,11 @@ #include ../config/netconfig.c #include ../../h_macros.h -ATF_TC(loopmtu); -ATF_TC_HEAD(loopmtu, tc) -{ - - atf_tc_set_md_var(tc, descr, test lo0 fragmentation); - /* PR kern/43664 */ -} - -ATF_TC_BODY(loopmtu, tc) +/* + * Prepare rump server, configure interface and route to cause fragmentation + */ +static void +setup(void) { char ifname[IFNAMSIZ]; struct { @@ -68,11 +65,12 @@ } m_rtmsg; #define rtm m_rtmsg.m_rtm #define rsin m_rtmsg.m_sin - struct sockaddr_in sin; struct ifreq ifr; - char data[2000]; int s; + static bool init_done = false; + if (init_done) return; + strcpy(ifname, lo0); rump_init(); @@ -113,6 +111,106 @@ atf_tc_fail_errno(set route mtu); rump_sys_close(s); + init_done = true; +} + +/* + * Turn on checksums on loopback interfaces + */ +static int +enable_locsums(void) +{ + struct sysctlnode q, ans[256]; + int mib[5], enable; + size_t alen; + unsigned i; + + mib[0] = CTL_NET; + mib[1] = PF_INET; + mib[2] = IPPROTO_IP; + mib[3] = CTL_QUERY; + alen = sizeof(ans); + + memset(q, 0, sizeof(q)); + q.sysctl_flags = SYSCTL_VERSION; + + if (rump_sys___sysctl(mib, 4, ans, alen, q, sizeof(q)) == -1) + return -1; + + for (i = 0; i __arraycount(ans); i++) + if (strcmp(do_loopback_cksum, ans[i].sysctl_name) == 0) + break; + if (i == __arraycount(ans)) { + errno = ENOENT; + return -1; + } + + mib[3] = ans[i].sysctl_num; + + enable = 1; + if (rump_sys___sysctl(mib, 4, NULL, NULL, enable, + sizeof(enable)) == -1) + return errno; + + return 0; +} + +ATF_TC(loopmtu); +ATF_TC_HEAD(loopmtu, tc) +{ + + atf_tc_set_md_var(tc, descr, test lo0 fragmentation); + /* PR kern/43664 */ +} + +ATF_TC_BODY(loopmtu, tc) +{ + struct sockaddr_in sin; + char data[2000]; + int s; + + setup(); + + /* open raw socket */ + s = rump_sys_socket(PF_INET, SOCK_RAW, 0); + if (s == -1) + atf_tc_fail_errno(raw socket); + + /* then, send data */ + memset(sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_len = sizeof(sin); + sin.sin_port = htons(12345); + sin.sin_addr.s_addr = inet_addr(127.0.0.1); + + /* + * Should not fail anymore, PR has been fixed... + * + * atf_tc_expect_signal(SIGABRT, PR kern/43664); + */ + if (rump_sys_sendto(s, data, sizeof(data), 0, + (struct sockaddr *)sin, sizeof(sin)) == -1) + atf_tc_fail_errno(sendto failed); +} + +ATF_TC(loopmtu_csum); +ATF_TC_HEAD(loopmtu_csum, tc) +{ + + atf_tc_set_md_var(tc, descr, test lo0 fragmentation with checksums); + /* PR kern/43664 */ +} + +ATF_TC_BODY(loopmtu_csum, tc) +{ + struct sockaddr_in sin; + char data[2000]; + int s; + + setup(); + + ATF_CHECK(enable_locsums() == 0); + /* open raw socket */ s = rump_sys_socket(PF_INET, SOCK_RAW, 0); if (s == -1) @@ -139,6 +237,8 @@ { ATF_TP_ADD_TC(tp, loopmtu); + ATF_TP_ADD_TC(tp, loopmtu_csum); return atf_no_error(); } +
CVS commit: src/sys/sys
Module Name:src Committed By: christos Date: Sun Apr 10 14:37:20 UTC 2011 Modified Files: src/sys/sys: siginfo.h Log Message: revert previous. breaks things in subtle ways (ntpdate gets stuck on boot, shell processes get stuck on ^C) To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/sys/siginfo.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/sys/siginfo.h diff -u src/sys/sys/siginfo.h:1.21 src/sys/sys/siginfo.h:1.22 --- src/sys/sys/siginfo.h:1.21 Sat Apr 9 20:04:37 2011 +++ src/sys/sys/siginfo.h Sun Apr 10 10:37:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: siginfo.h,v 1.21 2011/04/10 00:04:37 christos Exp $ */ +/* $NetBSD: siginfo.h,v 1.22 2011/04/10 14:37:20 christos Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -60,12 +60,6 @@ struct { pid_t _pid; uid_t _uid; - lwpid_t _lid; - } _lwp; - - struct { - pid_t _pid; - uid_t _uid; int _status; clock_t _utime; clock_t _stime; @@ -88,6 +82,7 @@ u_long ksi_flags; /* 4 or 8 bytes (LP64) */ CIRCLEQ_ENTRY(ksiginfo) ksi_list; struct _ksiginfo ksi_info; + lwpid_t ksi_lid; /* 0, or directed to LWP */ } ksiginfo_t; #define KSI_TRAP 0x01 /* signal caused by trap */ @@ -145,9 +140,6 @@ #define si_value _info._reason._rt._value #define si_pid _info._reason._child._pid #define si_uid _info._reason._child._uid -#if defined(_NETBSD_SOURCE) -#define si_lid _info._reason._lwp._lid -#endif #define si_status _info._reason._child._status #define si_utime _info._reason._child._utime #define si_stime _info._reason._child._stime @@ -165,15 +157,12 @@ #define ksi_errno ksi_info._errno #define ksi_value ksi_info._reason._rt._value - #define ksi_pid ksi_info._reason._child._pid #define ksi_uid ksi_info._reason._child._uid #define ksi_status ksi_info._reason._child._status #define ksi_utime ksi_info._reason._child._utime #define ksi_stime ksi_info._reason._child._stime -#define ksi_lid ksi_info._reason._lwp._lid /* 0, or directed to LWP */ - #define ksi_addr ksi_info._reason._fault._addr #define ksi_trap ksi_info._reason._fault._trap
CVS commit: src/usr.bin/kdump
Module Name:src Committed By: christos Date: Sun Apr 10 14:38:19 UTC 2011 Modified Files: src/usr.bin/kdump: kdump.c Log Message: we don't have access to si_lid anymore. To generate a diff of this commit: cvs rdiff -u -r1.107 -r1.108 src/usr.bin/kdump/kdump.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/kdump/kdump.c diff -u src/usr.bin/kdump/kdump.c:1.107 src/usr.bin/kdump/kdump.c:1.108 --- src/usr.bin/kdump/kdump.c:1.107 Sat Apr 9 20:05:51 2011 +++ src/usr.bin/kdump/kdump.c Sun Apr 10 10:38:19 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kdump.c,v 1.107 2011/04/10 00:05:51 christos Exp $ */ +/* $NetBSD: kdump.c,v 1.108 2011/04/10 14:38:19 christos Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)kdump.c 8.4 (Berkeley) 4/28/95; #else -__RCSID($NetBSD: kdump.c,v 1.107 2011/04/10 00:05:51 christos Exp $); +__RCSID($NetBSD: kdump.c,v 1.108 2011/04/10 14:38:19 christos Exp $); #endif #endif /* not lint */ @@ -950,9 +950,8 @@ si-si_value.sival_ptr); return; case SI_LWP: -printf(: code=SI_LWP sent by pid=%d, uid=%d -with target lid=%d)\n, si-si_pid, -si-si_uid, si-si_lid); +printf(: code=SI_LWP sent by pid=%d, +uid=%d)\n, si-si_pid, si-si_uid); return; default: code = NULL;
CVS commit: src/sys/dev/pci
Module Name:src Committed By: jakllsch Date: Sun Apr 10 15:02:01 UTC 2011 Modified Files: src/sys/dev/pci: viaide.c Log Message: Fix regression introduced in 1.72. (Attach arguments need to be copied before using the copy.) To generate a diff of this commit: cvs rdiff -u -r1.72 -r1.73 src/sys/dev/pci/viaide.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/dev/pci/viaide.c diff -u src/sys/dev/pci/viaide.c:1.72 src/sys/dev/pci/viaide.c:1.73 --- src/sys/dev/pci/viaide.c:1.72 Mon Apr 4 20:37:56 2011 +++ src/sys/dev/pci/viaide.c Sun Apr 10 15:02:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: viaide.c,v 1.72 2011/04/04 20:37:56 dyoung Exp $ */ +/* $NetBSD: viaide.c,v 1.73 2011/04/10 15:02:01 jakllsch Exp $ */ /* * Copyright (c) 1999, 2000, 2001 Manuel Bouyer. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: viaide.c,v 1.72 2011/04/04 20:37:56 dyoung Exp $); +__KERNEL_RCSID(0, $NetBSD: viaide.c,v 1.73 2011/04/10 15:02:01 jakllsch Exp $); #include sys/param.h #include sys/systm.h @@ -914,11 +914,14 @@ struct pciide_channel *cp; struct ata_channel *wdc_cp; struct wdc_regs *wdr; - struct pci_attach_args pacopy, *pa = pacopy; - pcireg_t interface = PCI_INTERFACE(pa-pa_class); + struct pci_attach_args pacopy, *pa; + pcireg_t interface; int channel; pacopy = *pa0; + pa = pacopy; + interface = PCI_INTERFACE(pa-pa_class); + if (via_sata_chip_map_common(sc, pa) == 0) return; @@ -986,14 +989,17 @@ struct pciide_channel *cp; struct ata_channel *wdc_cp; struct wdc_regs *wdr; - struct pci_attach_args pacopy, *pa = pacopy; - pcireg_t interface = PCI_INTERFACE(pa-pa_class); + struct pci_attach_args pacopy, *pa; + pcireg_t interface; int channel; pci_intr_handle_t intrhandle; const char *intrstr; int i; pacopy = *pa0; + pa = pacopy; + interface = PCI_INTERFACE(pa-pa_class); + if (via_sata_chip_map_common(sc, pa) == 0) return;
CVS commit: src/sys/arch/x68k/dev
Module Name:src Committed By: tsutsui Date: Sun Apr 10 15:23:06 UTC 2011 Modified Files: src/sys/arch/x68k/dev: fd.c Log Message: Fix hangup on the first floppy access since 2008. Problem was reported by isaki@. On X680x0 (and most other machines other than ISA FDC), the ready line from FDD is connected to FDC and fdc driver can be notified of the ready state after fd_set_motor() by interrupts. In this case no need to use callout(9) to wait the FDD motor stabilized, and the callout(9) method used in ISA fdc(4) driver rather caused infinite unhandled interrupts since callout(9) was no longer invoked during interrupt storm after vmlocking2 merge, I guess. Should be pulled up to netbsd-5. To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.94 src/sys/arch/x68k/dev/fd.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/arch/x68k/dev/fd.c diff -u src/sys/arch/x68k/dev/fd.c:1.93 src/sys/arch/x68k/dev/fd.c:1.94 --- src/sys/arch/x68k/dev/fd.c:1.93 Sun Jun 6 04:52:01 2010 +++ src/sys/arch/x68k/dev/fd.c Sun Apr 10 15:23:06 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: fd.c,v 1.93 2010/06/06 04:52:01 mrg Exp $ */ +/* $NetBSD: fd.c,v 1.94 2011/04/10 15:23:06 tsutsui Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -64,7 +64,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: fd.c,v 1.93 2010/06/06 04:52:01 mrg Exp $); +__KERNEL_RCSID(0, $NetBSD: fd.c,v 1.94 2011/04/10 15:23:06 tsutsui Exp $); #include rnd.h #include opt_ddb.h @@ -212,7 +212,9 @@ struct fd_type *sc_deftype; /* default type descriptor */ struct fd_type *sc_type; /* current type descriptor */ +#if 0 /* see comments in fd_motor_on() */ struct callout sc_motoron_ch; +#endif struct callout sc_motoroff_ch; daddr_t sc_blkno; /* starting block number */ @@ -278,7 +280,9 @@ void fd_set_motor(struct fdc_softc *, int); void fd_motor_off(void *); +#if 0 void fd_motor_on(void *); +#endif int fdcresult(struct fdc_softc *); int out_fdc(bus_space_tag_t, bus_space_handle_t, u_char); void fdcstart(struct fdc_softc *); @@ -564,7 +568,9 @@ struct fd_type *type = fd_types[0]; /* XXX 1.2MB */ int drive = fa-fa_drive; +#if 0 callout_init(fd-sc_motoron_ch, 0); +#endif callout_init(fd-sc_motoroff_ch, 0); fd-sc_dev = self; @@ -788,6 +794,7 @@ splx(s); } +#if 0 /* on x68k motor on triggers interrupts by state change of ready line. */ void fd_motor_on(void *arg) { @@ -803,6 +810,7 @@ (void) fdcintr(fdc); splx(s); } +#endif int fdcresult(struct fdc_softc *fdc) @@ -1082,9 +1090,11 @@ fd-sc_flags |= FD_MOTOR | FD_MOTOR_WAIT; fd_set_motor(fdc, 0); fdc-sc_state = MOTORWAIT; +#if 0 /* no need to callout on x68k; motor on will trigger interrupts */ /* allow .5s for motor to stabilize */ callout_reset(fd-sc_motoron_ch, hz / 2, fd_motor_on, fd); +#endif return 1; } /* Make sure the right drive is selected. */ @@ -1437,8 +1447,22 @@ goto doseek; case MOTORWAIT: +#if 0 /* on x68k motor on triggers interrupts by state change of ready line. */ if (fd-sc_flags FD_MOTOR_WAIT) return 1; /* time's not up yet */ +#else + /* check drive ready by state change interrupt */ + KASSERT(fd-sc_flags FD_MOTOR_WAIT); + out_fdc(iot, ioh, NE7CMD_SENSEI); + tmp = fdcresult(fdc); + if (tmp != 2 || (st0 0xc0) != 0xc0 /* ready changed */) { + printf(%s: unexpected interrupt during MOTORWAIT, + device_xname(fd-sc_dev)); + fdcpstatus(7, fdc); + return 1; + } + fd-sc_flags = ~FD_MOTOR_WAIT; +#endif goto doseek; default:
CVS commit: src/doc
Module Name:src Committed By: jdc Date: Sun Apr 10 15:26:38 UTC 2011 Modified Files: src/doc: CHANGES Log Message: Mention ffb(4) EDID support. To generate a diff of this commit: cvs rdiff -u -r1.1537 -r1.1538 src/doc/CHANGES Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/doc/CHANGES diff -u src/doc/CHANGES:1.1537 src/doc/CHANGES:1.1538 --- src/doc/CHANGES:1.1537 Wed Apr 6 09:11:08 2011 +++ src/doc/CHANGES Sun Apr 10 15:26:37 2011 @@ -1,4 +1,4 @@ -# LIST OF CHANGES FROM LAST RELEASE: $Revision: 1.1537 $ +# LIST OF CHANGES FROM LAST RELEASE: $Revision: 1.1538 $ # # # [Note: This file does not mention every change made to the NetBSD source tree. @@ -987,3 +987,4 @@ [phx 20110404] sandpoint: QNAP support. [phx 20110405] dhcpcd(8): Import dhcpcd-5.2.12. [roy 20110406] + sparc64: Add EDID support to ffb(4). [jdc 20110408]
CVS commit: src/sys
Module Name:src Committed By: christos Date: Sun Apr 10 15:45:34 UTC 2011 Modified Files: src/sys/kern: kern_descrip.c sys_descrip.c sys_generic.c sys_pipe.c uipc_syscalls.c vfs_syscalls.c src/sys/sys: fcntl.h filedesc.h Log Message: - Add O_CLOEXEC to open(2) - Add fd_set_exclose() to encapsulate uses of FIO{,N}CLEX, O_CLOEXEC, F{G,S}ETFD - Add a pipe1() function to allow passing flags to the fd's that pipe(2) opens to ease implementation of linux pipe2(2) - Factor out fp handling code from open(2) and fhopen(2) To generate a diff of this commit: cvs rdiff -u -r1.211 -r1.212 src/sys/kern/kern_descrip.c cvs rdiff -u -r1.19 -r1.20 src/sys/kern/sys_descrip.c cvs rdiff -u -r1.125 -r1.126 src/sys/kern/sys_generic.c cvs rdiff -u -r1.129 -r1.130 src/sys/kern/sys_pipe.c cvs rdiff -u -r1.141 -r1.142 src/sys/kern/uipc_syscalls.c cvs rdiff -u -r1.421 -r1.422 src/sys/kern/vfs_syscalls.c cvs rdiff -u -r1.36 -r1.37 src/sys/sys/fcntl.h cvs rdiff -u -r1.58 -r1.59 src/sys/sys/filedesc.h 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/kern_descrip.c diff -u src/sys/kern/kern_descrip.c:1.211 src/sys/kern/kern_descrip.c:1.212 --- src/sys/kern/kern_descrip.c:1.211 Tue Feb 15 10:54:28 2011 +++ src/sys/kern/kern_descrip.c Sun Apr 10 11:45:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_descrip.c,v 1.211 2011/02/15 15:54:28 pooka Exp $ */ +/* $NetBSD: kern_descrip.c,v 1.212 2011/04/10 15:45:33 christos Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: kern_descrip.c,v 1.211 2011/02/15 15:54:28 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: kern_descrip.c,v 1.212 2011/04/10 15:45:33 christos Exp $); #include sys/param.h #include sys/systm.h @@ -1776,6 +1776,16 @@ return error; } +void +fd_set_exclose(struct lwp *l, int fd, bool exclose) +{ + filedesc_t *fdp = l-l_fd; + fdfile_t *ff = fdp-fd_dt-dt_ff[fd]; + ff-ff_exclose = exclose; + if (exclose) + fdp-fd_exclose = true; +} + /* * Return descriptor owner information. If the value is positive, * it's process ID. If it's negative, it's process group ID and Index: src/sys/kern/sys_descrip.c diff -u src/sys/kern/sys_descrip.c:1.19 src/sys/kern/sys_descrip.c:1.20 --- src/sys/kern/sys_descrip.c:1.19 Fri Dec 17 20:18:48 2010 +++ src/sys/kern/sys_descrip.c Sun Apr 10 11:45:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_descrip.c,v 1.19 2010/12/18 01:18:48 rmind Exp $ */ +/* $NetBSD: sys_descrip.c,v 1.20 2011/04/10 15:45:33 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.19 2010/12/18 01:18:48 rmind Exp $); +__KERNEL_RCSID(0, $NetBSD: sys_descrip.c,v 1.20 2011/04/10 15:45:33 christos Exp $); #include sys/param.h #include sys/systm.h @@ -315,7 +315,6 @@ int fd, i, tmp, error, cmd, newmin; filedesc_t *fdp; file_t *fp; - fdfile_t *ff; struct flock fl; fd = SCARG(uap, fd); @@ -358,7 +357,6 @@ if ((fp = fd_getfile(fd)) == NULL) return (EBADF); - ff = fdp-fd_dt-dt_ff[fd]; if ((cmd F_FSCTL)) { error = fcntl_forfs(fd, fp, cmd, SCARG(uap, arg)); @@ -380,16 +378,12 @@ break; case F_GETFD: - *retval = ff-ff_exclose; + *retval = fdp-fd_dt-dt_ff[fd]-ff_exclose; break; case F_SETFD: - if ((long)SCARG(uap, arg) FD_CLOEXEC) { - ff-ff_exclose = true; - fdp-fd_exclose = true; - } else { - ff-ff_exclose = false; - } + fd_set_exclose(l, fd, + ((long)SCARG(uap, arg) FD_CLOEXEC) != 0); break; case F_GETFL: Index: src/sys/kern/sys_generic.c diff -u src/sys/kern/sys_generic.c:1.125 src/sys/kern/sys_generic.c:1.126 --- src/sys/kern/sys_generic.c:1.125 Tue Jan 18 14:52:23 2011 +++ src/sys/kern/sys_generic.c Sun Apr 10 11:45:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_generic.c,v 1.125 2011/01/18 19:52:23 matt Exp $ */ +/* $NetBSD: sys_generic.c,v 1.126 2011/04/10 15:45:33 christos Exp $ */ /*- * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: sys_generic.c,v 1.125 2011/01/18 19:52:23 matt Exp $); +__KERNEL_RCSID(0, $NetBSD: sys_generic.c,v 1.126 2011/04/10 15:45:33 christos Exp $); #include sys/param.h #include sys/systm.h @@ -522,20 +522,17 @@ } */ struct file *fp; proc_t *p; - struct filedesc *fdp; u_long com; int error; size_t size, alloc_size; void *data, *memp; #define STK_PARAMS 128 u_long stkbuf[STK_PARAMS/sizeof(u_long)]; - fdfile_t *ff; memp = NULL; alloc_size = 0; error = 0; p = l-l_proc; - fdp = p-p_fd; if ((fp = fd_getfile(SCARG(uap, fd))) == NULL) return (EBADF); @@ -546,15 +543,10 @@ goto out; } - ff = fdp-fd_dt-dt_ff[SCARG(uap, fd)]; switch (com = SCARG(uap, com)) { case FIONCLEX: - ff-ff_exclose = false; - goto out; -
CVS commit: src/lib/libc/sys
Module Name:src Committed By: christos Date: Sun Apr 10 15:46:15 UTC 2011 Modified Files: src/lib/libc/sys: open.2 Log Message: Document O_CLOEXEC. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/lib/libc/sys/open.2 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/sys/open.2 diff -u src/lib/libc/sys/open.2:1.47 src/lib/libc/sys/open.2:1.48 --- src/lib/libc/sys/open.2:1.47 Wed Sep 22 13:58:09 2010 +++ src/lib/libc/sys/open.2 Sun Apr 10 11:46:15 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: open.2,v 1.47 2010/09/22 17:58:09 wiz Exp $ +.\ $NetBSD: open.2,v 1.48 2011/04/10 15:46:15 christos Exp $ .\ .\ Copyright (c) 1980, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\ .\ @(#)open.2 8.2 (Berkeley) 11/16/93 .\ -.Dd September 22, 2010 +.Dd April 10, 2011 .Dt OPEN 2 .Os .Sh NAME @@ -56,7 +56,7 @@ the values listed below. Applications must specify exactly one of the first three values (file access methods): -.Bl -tag -offset indent -width O_NONBLOCK +.Bl -tag -offset indent -width O_DIRECTORY .It Dv O_RDONLY Open for reading only. .It Dv O_WRONLY @@ -66,7 +66,7 @@ .El .Pp Any combination of the following may be used: -.Bl -tag -offset indent -width O_NONBLOCK +.Bl -tag -offset indent -width O_DIRECTORY .It Dv O_NONBLOCK Do not block on open or for data to become available. .It Dv O_APPEND @@ -93,6 +93,12 @@ If last path element is a symlink, don't follow it. This option is provided for compatibility with other operating systems, but its security value is questionable. +.It Dv O_CLOEXEC +Set the +.Xr close 2 +on +.Xr exec 2 +flag. .It Dv O_DSYNC If set, write operations will be performed according to synchronized I/O data integrity completion:
CVS commit: src/sys/compat/linux32/arch/amd64
Module Name:src Committed By: christos Date: Sun Apr 10 15:47:21 UTC 2011 Modified Files: src/sys/compat/linux32/arch/amd64: syscalls.master Log Message: add pipe2 and dup3 To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 src/sys/compat/linux32/arch/amd64/syscalls.master Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/compat/linux32/arch/amd64/syscalls.master diff -u src/sys/compat/linux32/arch/amd64/syscalls.master:1.57 src/sys/compat/linux32/arch/amd64/syscalls.master:1.58 --- src/sys/compat/linux32/arch/amd64/syscalls.master:1.57 Tue Nov 2 14:14:06 2010 +++ src/sys/compat/linux32/arch/amd64/syscalls.master Sun Apr 10 11:47:21 2011 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.57 2010/11/02 18:14:06 chs Exp $ + $NetBSD: syscalls.master,v 1.58 2011/04/10 15:47:21 christos Exp $ ; NetBSD i386 COMPAT_LINUX32 system call name/number master file. ; (See syscalls.conf to see what it is processed into.) @@ -513,8 +513,8 @@ 327 UNIMPL signalfd4 328 UNIMPL eventfd2 329 UNIMPL epoll_create1 -330 UNIMPL dup3 -331 UNIMPL pipe2 +330 STD { int|linux32_sys||dup3(int from, int to, int flags); } +331 STD { int|linux32_sys||pipe2(netbsd32_intp fd, int flags); } 332 UNIMPL inotify_init1 333 UNIMPL preadv 334 UNIMPL pwritev
CVS commit: src/sys/compat/linux32/arch/amd64
Module Name:src Committed By: christos Date: Sun Apr 10 15:48:01 UTC 2011 Modified Files: src/sys/compat/linux32/arch/amd64: linux32_syscall.h linux32_syscallargs.h linux32_syscalls.c linux32_sysent.c Log Message: Regen: XXX: produces errors because of rump changes! To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 \ src/sys/compat/linux32/arch/amd64/linux32_syscall.h \ src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h \ src/sys/compat/linux32/arch/amd64/linux32_syscalls.c \ src/sys/compat/linux32/arch/amd64/linux32_sysent.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/compat/linux32/arch/amd64/linux32_syscall.h diff -u src/sys/compat/linux32/arch/amd64/linux32_syscall.h:1.60 src/sys/compat/linux32/arch/amd64/linux32_syscall.h:1.61 --- src/sys/compat/linux32/arch/amd64/linux32_syscall.h:1.60 Tue Nov 2 14:15:39 2010 +++ src/sys/compat/linux32/arch/amd64/linux32_syscall.h Sun Apr 10 11:48:01 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: linux32_syscall.h,v 1.60 2010/11/02 18:15:39 chs Exp $ */ +/* $NetBSD: linux32_syscall.h,v 1.61 2011/04/10 15:48:01 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.57 2010/11/02 18:14:06 chs Exp + * created from NetBSD: syscalls.master,v 1.58 2011/04/10 15:47:21 christos Exp */ #ifndef _LINUX32_SYS_SYSCALL_H_ @@ -612,6 +612,12 @@ /* syscall: get_robust_list ret: int args: linux32_pid_t linux32_robust_list_headpp_t linux32_sizep_t */ #define LINUX32_SYS_get_robust_list 312 +/* syscall: dup3 ret: int args: int int int */ +#define LINUX32_SYS_dup3 330 + +/* syscall: pipe2 ret: int args: netbsd32_intp int */ +#define LINUX32_SYS_pipe2 331 + #define LINUX32_SYS_MAXSYSCALL 338 #define LINUX32_SYS_NSYSENT 512 #endif /* _LINUX32_SYS_SYSCALL_H_ */ Index: src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h diff -u src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h:1.60 src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h:1.61 --- src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h:1.60 Tue Nov 2 14:15:39 2010 +++ src/sys/compat/linux32/arch/amd64/linux32_syscallargs.h Sun Apr 10 11:48:01 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: linux32_syscallargs.h,v 1.60 2010/11/02 18:15:39 chs Exp $ */ +/* $NetBSD: linux32_syscallargs.h,v 1.61 2011/04/10 15:48:01 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.57 2010/11/02 18:14:06 chs Exp + * created from NetBSD: syscalls.master,v 1.58 2011/04/10 15:47:21 christos Exp */ #ifndef _LINUX32_SYS_SYSCALLARGS_H_ @@ -27,7 +27,7 @@ } #undef check_syscall_args -#define check_syscall_args(call) \ +#define check_syscall_args(call) /*LINTED*/ \ typedef char call##_check_args[sizeof (struct call##_args) \ = LINUX32_SYS_MAXSYSARGS * sizeof (register32_t) ? 1 : -1]; @@ -871,6 +871,19 @@ }; check_syscall_args(linux32_sys_get_robust_list) +struct linux32_sys_dup3_args { + syscallarg(int) from; + syscallarg(int) to; + syscallarg(int) flags; +}; +check_syscall_args(linux32_sys_dup3) + +struct linux32_sys_pipe2_args { + syscallarg(netbsd32_intp) fd; + syscallarg(int) flags; +}; +check_syscall_args(linux32_sys_pipe2) + /* * System call prototypes. */ @@ -1253,4 +1266,8 @@ int linux32_sys_get_robust_list(struct lwp *, const struct linux32_sys_get_robust_list_args *, register_t *); +int linux32_sys_dup3(struct lwp *, const struct linux32_sys_dup3_args *, register_t *); + +int linux32_sys_pipe2(struct lwp *, const struct linux32_sys_pipe2_args *, register_t *); + #endif /* _LINUX32_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux32/arch/amd64/linux32_syscalls.c diff -u src/sys/compat/linux32/arch/amd64/linux32_syscalls.c:1.60 src/sys/compat/linux32/arch/amd64/linux32_syscalls.c:1.61 --- src/sys/compat/linux32/arch/amd64/linux32_syscalls.c:1.60 Tue Nov 2 14:15:39 2010 +++ src/sys/compat/linux32/arch/amd64/linux32_syscalls.c Sun Apr 10 11:48:01 2011 @@ -1,14 +1,14 @@ -/* $NetBSD: linux32_syscalls.c,v 1.60 2010/11/02 18:15:39 chs Exp $ */ +/* $NetBSD: linux32_syscalls.c,v 1.61 2011/04/10 15:48:01 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.57 2010/11/02 18:14:06 chs Exp + * created from NetBSD: syscalls.master,v 1.58 2011/04/10 15:47:21 christos Exp */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: linux32_syscalls.c,v 1.60 2010/11/02 18:15:39 chs Exp $); +__KERNEL_RCSID(0, $NetBSD: linux32_syscalls.c,v 1.61 2011/04/10 15:48:01 christos Exp $); #if defined(_KERNEL_OPT) #include sys/param.h @@ -367,12 +367,186 @@ /* 327 */ #327 (unimplemented signalfd4), /* 328 */ #328 (unimplemented eventfd2), /* 329 */ #329
CVS commit: src/sys/compat/linux32/common
Module Name:src Committed By: christos Date: Sun Apr 10 15:48:23 UTC 2011 Modified Files: src/sys/compat/linux32/common: linux32_unistd.c Log Message: implement pipe2 and dup3 To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/compat/linux32/common/linux32_unistd.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/compat/linux32/common/linux32_unistd.c diff -u src/sys/compat/linux32/common/linux32_unistd.c:1.34 src/sys/compat/linux32/common/linux32_unistd.c:1.35 --- src/sys/compat/linux32/common/linux32_unistd.c:1.34 Wed Nov 11 04:48:51 2009 +++ src/sys/compat/linux32/common/linux32_unistd.c Sun Apr 10 11:48:23 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_unistd.c,v 1.34 2009/11/11 09:48:51 rmind Exp $ */ +/* $NetBSD: linux32_unistd.c,v 1.35 2011/04/10 15:48:23 christos Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: linux32_unistd.c,v 1.34 2009/11/11 09:48:51 rmind Exp $); +__KERNEL_RCSID(0, $NetBSD: linux32_unistd.c,v 1.35 2011/04/10 15:48:23 christos Exp $); #include sys/types.h #include sys/param.h @@ -47,6 +47,7 @@ #include sys/ucred.h #include sys/swap.h #include sys/kauth.h +#include sys/filedesc.h #include machine/types.h @@ -62,6 +63,7 @@ #include compat/linux/common/linux_oldolduname.h #include compat/linux/common/linux_ipc.h #include compat/linux/common/linux_sem.h +#include compat/linux/common/linux_fcntl.h #include compat/linux/linux_syscallargs.h #include compat/linux32/common/linux32_types.h @@ -221,8 +223,8 @@ return 0; } -int -linux32_sys_pipe(struct lwp *l, const struct linux32_sys_pipe_args *uap, register_t *retval) +static int +linux32_pipe(struct lwp *l, int *fd, register_t *retval, int flags) { /* { syscallarg(netbsd32_intp) fd; @@ -230,21 +232,79 @@ int error; int pfds[2]; - if ((error = sys_pipe(l, 0, retval))) - return error; - pfds[0] = (int)retval[0]; pfds[1] = (int)retval[1]; - if ((error = copyout(pfds, SCARG_P32(uap, fd), 2 * sizeof (int))) != 0) + if ((error = copyout(pfds, fd, 2 * sizeof(*fd))) != 0) return error; + if (flags LINUX_O_CLOEXEC) { + fd_set_exclose(l, retval[0], true); + fd_set_exclose(l, retval[1], true); + } retval[0] = 0; retval[1] = 0; return 0; } +int +linux32_sys_pipe(struct lwp *l, const struct linux32_sys_pipe_args *uap, +register_t *retval) +{ + int error; + if ((error = pipe1(l, retval, 0))) + return error; + return linux32_pipe(l, SCARG_P32(uap, fd), retval, 0); +} + +int +linux32_sys_pipe2(struct lwp *l, const struct linux32_sys_pipe2_args *uap, +register_t *retval) +{ + int flag = 0; + int error; + + switch (SCARG(uap, flags)) { + case LINUX_O_CLOEXEC: + break; + case LINUX_O_NONBLOCK: + case LINUX_O_NONBLOCK|LINUX_O_CLOEXEC: + flag = O_NONBLOCK; + break; + default: + return EINVAL; + } + + if ((error = pipe1(l, retval, flag))) + return error; + + return linux32_pipe(l, SCARG_P32(uap, fd), retval, SCARG(uap, flags)); +} + +int +linux32_sys_dup3(struct lwp *l, const struct linux32_sys_dup3_args *uap, +register_t *retval) +{ + /* { + syscallarg(int) from; + syscallarg(int) to; + syscallarg(int) flags; + } */ + struct sys_dup2_args ua; + int error; + + NETBSD32TO64_UAP(from); + NETBSD32TO64_UAP(to); + + if ((error = sys_dup2(l, ua, retval))) + return error; + + if (SCARG(uap, flags) LINUX_O_CLOEXEC) + fd_set_exclose(l, SCARG(uap, to), true); + + return 0; +} int linux32_sys_unlink(struct lwp *l, const struct linux32_sys_unlink_args *uap, register_t *retval)
CVS commit: src/sys/compat/linux/arch
Module Name:src Committed By: christos Date: Sun Apr 10 15:48:46 UTC 2011 Modified Files: src/sys/compat/linux/arch/amd64: syscalls.master src/sys/compat/linux/arch/i386: syscalls.master Log Message: add pipe2 and dup3 To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/compat/linux/arch/amd64/syscalls.master cvs rdiff -u -r1.103 -r1.104 src/sys/compat/linux/arch/i386/syscalls.master Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/compat/linux/arch/amd64/syscalls.master diff -u src/sys/compat/linux/arch/amd64/syscalls.master:1.35 src/sys/compat/linux/arch/amd64/syscalls.master:1.36 --- src/sys/compat/linux/arch/amd64/syscalls.master:1.35 Tue Jul 6 21:30:33 2010 +++ src/sys/compat/linux/arch/amd64/syscalls.master Sun Apr 10 11:48:46 2011 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.35 2010/07/07 01:30:33 chs Exp $ + $NetBSD: syscalls.master,v 1.36 2011/04/10 15:48:46 christos Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 @@ -496,8 +496,8 @@ 289 UNIMPL signalfd4 290 UNIMPL eventfd2 291 UNIMPL epoll_create1 -292 UNIMPL dup3 -293 UNIMPL pipe2 +292 STD { int|linux_sys||dup3(int from, int to, int flags); } +293 STD { int|linux_sys||pipe2(int *pfds, int flags); } 294 UNIMPL inotify_init1 295 UNIMPL preadv 296 UNIMPL pwritev Index: src/sys/compat/linux/arch/i386/syscalls.master diff -u src/sys/compat/linux/arch/i386/syscalls.master:1.103 src/sys/compat/linux/arch/i386/syscalls.master:1.104 --- src/sys/compat/linux/arch/i386/syscalls.master:1.103 Tue Jul 6 21:30:34 2010 +++ src/sys/compat/linux/arch/i386/syscalls.master Sun Apr 10 11:48:46 2011 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.103 2010/07/07 01:30:34 chs Exp $ + $NetBSD: syscalls.master,v 1.104 2011/04/10 15:48:46 christos Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 @@ -509,8 +509,9 @@ 327 UNIMPL signalfd4 328 UNIMPL eventfd2 329 UNIMPL epoll_create1 -330 UNIMPL dup3 -331 UNIMPL pipe2 +330 STD { int|linux_sys||dup3(u_int from, u_int to, \ +int flags); } +331 STD { int|linux_sys||pipe2( int *pfds, int flags); } 332 UNIMPL inotify_init1 333 UNIMPL preadv 334 UNIMPL pwritev
CVS commit: src/sys/compat/linux/arch
Module Name:src Committed By: christos Date: Sun Apr 10 15:49:24 UTC 2011 Modified Files: src/sys/compat/linux/arch/amd64: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c src/sys/compat/linux/arch/i386: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c Log Message: Regen: Argh: cat: rumphdr.types: No such file or directory rm: rumphdr.types: No such file or directory *** Error code 1 To generate a diff of this commit: cvs rdiff -u -r1.38 -r1.39 src/sys/compat/linux/arch/amd64/linux_syscall.h \ src/sys/compat/linux/arch/amd64/linux_syscallargs.h \ src/sys/compat/linux/arch/amd64/linux_syscalls.c \ src/sys/compat/linux/arch/amd64/linux_sysent.c cvs rdiff -u -r1.88 -r1.89 src/sys/compat/linux/arch/i386/linux_syscall.h \ src/sys/compat/linux/arch/i386/linux_syscallargs.h \ src/sys/compat/linux/arch/i386/linux_sysent.c cvs rdiff -u -r1.89 -r1.90 src/sys/compat/linux/arch/i386/linux_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/compat/linux/arch/amd64/linux_syscall.h diff -u src/sys/compat/linux/arch/amd64/linux_syscall.h:1.38 src/sys/compat/linux/arch/amd64/linux_syscall.h:1.39 --- src/sys/compat/linux/arch/amd64/linux_syscall.h:1.38 Tue Jul 6 21:31:51 2010 +++ src/sys/compat/linux/arch/amd64/linux_syscall.h Sun Apr 10 11:49:23 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.38 2010/07/07 01:31:51 chs Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.39 2011/04/10 15:49:23 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.35 2010/07/07 01:30:33 chs Exp + * created from NetBSD: syscalls.master,v 1.36 2011/04/10 15:48:46 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -591,6 +591,12 @@ /* syscall: get_robust_list ret: int args: int struct linux_robust_list_head ** size_t * */ #define LINUX_SYS_get_robust_list 274 +/* syscall: dup3 ret: int args: int int int */ +#define LINUX_SYS_dup3 292 + +/* syscall: pipe2 ret: int args: int * int */ +#define LINUX_SYS_pipe2 293 + /* syscall: nosys ret: int args: */ #define LINUX_SYS_nosys 300 Index: src/sys/compat/linux/arch/amd64/linux_syscallargs.h diff -u src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.38 src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.39 --- src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.38 Tue Jul 6 21:31:51 2010 +++ src/sys/compat/linux/arch/amd64/linux_syscallargs.h Sun Apr 10 11:49:23 2011 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.38 2010/07/07 01:31:51 chs Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.39 2011/04/10 15:49:23 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.35 2010/07/07 01:30:33 chs Exp + * created from NetBSD: syscalls.master,v 1.36 2011/04/10 15:48:46 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -27,7 +27,7 @@ } #undef check_syscall_args -#define check_syscall_args(call) \ +#define check_syscall_args(call) /*LINTED*/ \ typedef char call##_check_args[sizeof (struct call##_args) \ = LINUX_SYS_MAXSYSARGS * sizeof (register_t) ? 1 : -1]; @@ -890,6 +890,19 @@ }; check_syscall_args(linux_sys_get_robust_list) +struct linux_sys_dup3_args { + syscallarg(int) from; + syscallarg(int) to; + syscallarg(int) flags; +}; +check_syscall_args(linux_sys_dup3) + +struct linux_sys_pipe2_args { + syscallarg(int *) pfds; + syscallarg(int) flags; +}; +check_syscall_args(linux_sys_pipe2) + /* * System call prototypes. */ @@ -1285,6 +1298,10 @@ int linux_sys_get_robust_list(struct lwp *, const struct linux_sys_get_robust_list_args *, register_t *); +int linux_sys_dup3(struct lwp *, const struct linux_sys_dup3_args *, register_t *); + +int linux_sys_pipe2(struct lwp *, const struct linux_sys_pipe2_args *, register_t *); + int linux_sys_nosys(struct lwp *, const void *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/amd64/linux_syscalls.c diff -u src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.38 src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.39 --- src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.38 Tue Jul 6 21:31:51 2010 +++ src/sys/compat/linux/arch/amd64/linux_syscalls.c Sun Apr 10 11:49:23 2011 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.38 2010/07/07 01:31:51 chs Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.39 2011/04/10 15:49:23 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.35 2010/07/07 01:30:33 chs Exp + * created from NetBSD: syscalls.master,v 1.36 2011/04/10 15:48:46 christos Exp */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: linux_syscalls.c,v 1.38
CVS commit: src/sys/compat/linux/common
Module Name:src Committed By: christos Date: Sun Apr 10 15:49:56 UTC 2011 Modified Files: src/sys/compat/linux/common: linux_file.c Log Message: We have O_CLOEXEC now To generate a diff of this commit: cvs rdiff -u -r1.101 -r1.102 src/sys/compat/linux/common/linux_file.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/compat/linux/common/linux_file.c diff -u src/sys/compat/linux/common/linux_file.c:1.101 src/sys/compat/linux/common/linux_file.c:1.102 --- src/sys/compat/linux/common/linux_file.c:1.101 Fri Nov 19 01:44:37 2010 +++ src/sys/compat/linux/common/linux_file.c Sun Apr 10 11:49:56 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_file.c,v 1.101 2010/11/19 06:44:37 dholland Exp $ */ +/* $NetBSD: linux_file.c,v 1.102 2011/04/10 15:49:56 christos Exp $ */ /*- * Copyright (c) 1995, 1998, 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: linux_file.c,v 1.101 2010/11/19 06:44:37 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: linux_file.c,v 1.102 2011/04/10 15:49:56 christos Exp $); #include sys/param.h #include sys/systm.h @@ -102,6 +102,7 @@ res |= cvtto_bsd_mask(lflags, LINUX_FASYNC, O_ASYNC); res |= cvtto_bsd_mask(lflags, LINUX_O_APPEND, O_APPEND); res |= cvtto_bsd_mask(lflags, LINUX_O_DIRECTORY, O_DIRECTORY); + res |= cvtto_bsd_mask(lflags, LINUX_O_CLOEXEC, O_CLOEXEC); return res; } @@ -123,6 +124,7 @@ res |= cvtto_linux_mask(bflags, O_ASYNC, LINUX_FASYNC); res |= cvtto_linux_mask(bflags, O_APPEND, LINUX_O_APPEND); res |= cvtto_linux_mask(bflags, O_DIRECTORY, LINUX_O_DIRECTORY); + res |= cvtto_linux_mask(bflags, O_CLOEXEC, LINUX_O_CLOEXEC); return res; }
CVS commit: src/sys/compat/linux/common
Module Name:src Committed By: christos Date: Sun Apr 10 15:50:34 UTC 2011 Modified Files: src/sys/compat/linux/common: linux_pipe.c Log Message: - implement dup3 and pipe2 - eliminate amd64 ifdef To generate a diff of this commit: cvs rdiff -u -r1.63 -r1.64 src/sys/compat/linux/common/linux_pipe.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/compat/linux/common/linux_pipe.c diff -u src/sys/compat/linux/common/linux_pipe.c:1.63 src/sys/compat/linux/common/linux_pipe.c:1.64 --- src/sys/compat/linux/common/linux_pipe.c:1.63 Wed Jun 18 08:24:18 2008 +++ src/sys/compat/linux/common/linux_pipe.c Sun Apr 10 11:50:34 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_pipe.c,v 1.63 2008/06/18 12:24:18 tsutsui Exp $ */ +/* $NetBSD: linux_pipe.c,v 1.64 2011/04/10 15:50:34 christos Exp $ */ /*- * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: linux_pipe.c,v 1.63 2008/06/18 12:24:18 tsutsui Exp $); +__KERNEL_RCSID(0, $NetBSD: linux_pipe.c,v 1.64 2011/04/10 15:50:34 christos Exp $); #include sys/param.h #include sys/systm.h @@ -39,6 +39,8 @@ #include sys/mbuf.h #include sys/mman.h #include sys/mount.h +#include sys/fcntl.h +#include sys/filedesc.h #include sys/sched.h #include sys/syscallargs.h @@ -48,6 +50,7 @@ #include compat/linux/common/linux_signal.h #include compat/linux/common/linux_ipc.h #include compat/linux/common/linux_sem.h +#include compat/linux/common/linux_fcntl.h #include compat/linux/linux_syscallargs.h @@ -59,33 +62,90 @@ * NetBSD passes fd[0] in retval[0], and fd[1] in retval[1]. * Linux directly passes the pointer. */ +static int +linux_pipe_return(struct lwp *l, int *pfds, register_t *retval, int flags) +{ + int error; + + if (sizeof(*retval) != sizeof(*pfds)) { + /* On amd64, sizeof(register_t) != sizeof(int) */ + int rpfds[2]; + rpfds[0] = (int)retval[0]; + rpfds[1] = (int)retval[1]; + + if ((error = copyout(rpfds, pfds, sizeof(rpfds + return error; + } else { + if ((error = copyout(retval, pfds, 2 * sizeof(*pfds + return error; + } + if (flags LINUX_O_CLOEXEC) { + fd_set_exclose(l, retval[0], true); + fd_set_exclose(l, retval[1], true); + } + retval[0] = 0; + return 0; +} + int -linux_sys_pipe(struct lwp *l, const struct linux_sys_pipe_args *uap, register_t *retval) +linux_sys_pipe(struct lwp *l, const struct linux_sys_pipe_args *uap, +register_t *retval) { /* { syscallarg(int *) pfds; } */ int error; -#ifdef __amd64__ - int pfds[2]; -#endif - if ((error = sys_pipe(l, 0, retval))) + if ((error = pipe1(l, retval, 0))) return error; -#ifndef __amd64__ - /* Assumes register_t is an int */ - if ((error = copyout(retval, SCARG(uap, pfds), 2 * sizeof (int + return linux_pipe_return(l, SCARG(uap, pfds), retval, 0); +} + +int +linux_sys_pipe2(struct lwp *l, const struct linux_sys_pipe2_args *uap, +register_t *retval) +{ + /* { + syscallarg(int *) pfds; + syscallarg(int) flags; + } */ + int error; + int flag = 0; + + switch (SCARG(uap, flags)) { + case LINUX_O_CLOEXEC: + break; + case LINUX_O_NONBLOCK: + case LINUX_O_NONBLOCK|LINUX_O_CLOEXEC: + flag = O_NONBLOCK; + break; + default: + return EINVAL; + } + + if ((error = pipe1(l, retval, flag))) return error; -#else - /* On amd64, sizeof(register_t) != sizeof(int) */ - pfds[0] = (int)retval[0]; - pfds[1] = (int)retval[1]; - if ((error = copyout(pfds, SCARG(uap, pfds), sizeof(pfds + return linux_pipe_return(l, SCARG(uap, pfds), retval, + SCARG(uap, flags)); +} + +int +linux_sys_dup3(struct lwp *l, const struct linux_sys_dup3_args *uap, +register_t *retval) +{ + /* { + syscallarg(int) from; + syscallarg(int) to; + syscallarg(int) flags; + } */ + int error; + if ((error = sys_dup2(l, (const struct sys_dup2_args *)uap, retval))) return error; -#endif - retval[0] = 0; + if (SCARG(uap, flags) LINUX_O_CLOEXEC) + fd_set_exclose(l, SCARG(uap, to), true); + return 0; }
CVS commit: src/usr.bin/kdump
Module Name:src Committed By: pgoyette Date: Sun Apr 10 16:06:59 UTC 2011 Modified Files: src/usr.bin/kdump: kdump.c Log Message: Fix string constant so it compiles again. To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/usr.bin/kdump/kdump.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/kdump/kdump.c diff -u src/usr.bin/kdump/kdump.c:1.108 src/usr.bin/kdump/kdump.c:1.109 --- src/usr.bin/kdump/kdump.c:1.108 Sun Apr 10 14:38:19 2011 +++ src/usr.bin/kdump/kdump.c Sun Apr 10 16:06:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kdump.c,v 1.108 2011/04/10 14:38:19 christos Exp $ */ +/* $NetBSD: kdump.c,v 1.109 2011/04/10 16:06:59 pgoyette Exp $ */ /*- * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = @(#)kdump.c 8.4 (Berkeley) 4/28/95; #else -__RCSID($NetBSD: kdump.c,v 1.108 2011/04/10 14:38:19 christos Exp $); +__RCSID($NetBSD: kdump.c,v 1.109 2011/04/10 16:06:59 pgoyette Exp $); #endif #endif /* not lint */ @@ -951,7 +951,7 @@ return; case SI_LWP: printf(: code=SI_LWP sent by pid=%d, -uid=%d)\n, si-si_pid, si-si_uid); +uid=%d)\n, si-si_pid, si-si_uid); return; default: code = NULL;
CVS commit: src/distrib/i386/ramdisks/common
Module Name:src Committed By: joerg Date: Sun Apr 10 16:45:52 UTC 2011 Modified Files: src/distrib/i386/ramdisks/common: Makefile.ramdisk Log Message: Extend LDFLAGS, don't replace it. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/distrib/i386/ramdisks/common/Makefile.ramdisk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/distrib/i386/ramdisks/common/Makefile.ramdisk diff -u src/distrib/i386/ramdisks/common/Makefile.ramdisk:1.9 src/distrib/i386/ramdisks/common/Makefile.ramdisk:1.10 --- src/distrib/i386/ramdisks/common/Makefile.ramdisk:1.9 Thu Feb 11 09:06:48 2010 +++ src/distrib/i386/ramdisks/common/Makefile.ramdisk Sun Apr 10 16:45:52 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.ramdisk,v 1.9 2010/02/11 09:06:48 roy Exp $ +# $NetBSD: Makefile.ramdisk,v 1.10 2011/04/10 16:45:52 joerg Exp $ .include bsd.own.mk .include ${NETBSDSRCDIR}/distrib/common/Makefile.distrib @@ -29,7 +29,8 @@ # This propogates through to the link of ramdiskbin # The map file is useful when trying to prune the image -CRUNCHENV += LDFLAGS='-Wl,-Map,${CRUNCHBIN}.map,--cref' +LDFLAGS+= -Wl,-Map,${CRUNCHBIN}.map,--cref +CRUNCHENV += LDFLAGS=${LDFLAGS:Q} .if defined(USE_SYSINST) .if ${USE_SYSINST} != yes
CVS commit: src
Module Name:src Committed By: joerg Date: Sun Apr 10 16:47:05 UTC 2011 Modified Files: src/gnu/usr.bin/gdb6/gdb: Makefile src/gnu/usr.bin/gdb6/gdbtui: Makefile src/gnu/usr.bin/gdb6/libgdb: Makefile src/sbin/mount_ffs: Makefile src/sbin/mount_hfs: Makefile src/sbin/mount_nfs: Makefile Log Message: Extend CPPFLAGS, don't replace it To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/gnu/usr.bin/gdb6/gdb/Makefile cvs rdiff -u -r1.5 -r1.6 src/gnu/usr.bin/gdb6/gdbtui/Makefile cvs rdiff -u -r1.10 -r1.11 src/gnu/usr.bin/gdb6/libgdb/Makefile cvs rdiff -u -r1.9 -r1.10 src/sbin/mount_ffs/Makefile cvs rdiff -u -r1.3 -r1.4 src/sbin/mount_hfs/Makefile cvs rdiff -u -r1.23 -r1.24 src/sbin/mount_nfs/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/gnu/usr.bin/gdb6/gdb/Makefile diff -u src/gnu/usr.bin/gdb6/gdb/Makefile:1.8 src/gnu/usr.bin/gdb6/gdb/Makefile:1.9 --- src/gnu/usr.bin/gdb6/gdb/Makefile:1.8 Wed Feb 3 15:34:39 2010 +++ src/gnu/usr.bin/gdb6/gdb/Makefile Sun Apr 10 16:47:04 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.8 2010/02/03 15:34:39 roy Exp $ +# $NetBSD: Makefile,v 1.9 2011/04/10 16:47:04 joerg Exp $ .include ../Makefile.inc @@ -10,7 +10,7 @@ PROG= gdb SRCS= gdb.c -CPPFLAGS= -I${.CURDIR} \ +CPPFLAGS+= -I${.CURDIR} \ -I${.CURDIR}/../arch/${MACHINE_ARCH} \ -I${DIST}/gdb \ -I${DIST}/gdb/config \ Index: src/gnu/usr.bin/gdb6/gdbtui/Makefile diff -u src/gnu/usr.bin/gdb6/gdbtui/Makefile:1.5 src/gnu/usr.bin/gdb6/gdbtui/Makefile:1.6 --- src/gnu/usr.bin/gdb6/gdbtui/Makefile:1.5 Sat Mar 27 19:46:57 2010 +++ src/gnu/usr.bin/gdb6/gdbtui/Makefile Sun Apr 10 16:47:04 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2010/03/27 19:46:57 mrg Exp $ +# $NetBSD: Makefile,v 1.6 2011/04/10 16:47:04 joerg Exp $ .include ../Makefile.inc @@ -10,7 +10,7 @@ PROG= gdbtui SRCS= tui-main.c -CPPFLAGS= -I${.CURDIR} \ +CPPFLAGS+= -I${.CURDIR} \ -I${.CURDIR}/../arch/${MACHINE_ARCH} \ -I${DIST}/gdb \ -I${DIST}/gdb/config \ Index: src/gnu/usr.bin/gdb6/libgdb/Makefile diff -u src/gnu/usr.bin/gdb6/libgdb/Makefile:1.10 src/gnu/usr.bin/gdb6/libgdb/Makefile:1.11 --- src/gnu/usr.bin/gdb6/libgdb/Makefile:1.10 Fri Feb 18 22:27:51 2011 +++ src/gnu/usr.bin/gdb6/libgdb/Makefile Sun Apr 10 16:47:04 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.10 2011/02/18 22:27:51 joerg Exp $ +# $NetBSD: Makefile,v 1.11 2011/04/10 16:47:04 joerg Exp $ .include bsd.own.mk @@ -14,7 +14,7 @@ SRCS= ${G_LIBGDB_OBS:.o=.c} GCPPFLAGS= ${G_INTERNAL_CFLAGS} CPPFLAGS.bsd-kvm.c= -D_KMEMUSER -CPPFLAGS= -I${.CURDIR} \ +CPPFLAGS+= -I${.CURDIR} \ -I${.CURDIR}/../arch/${MACHINE_ARCH} \ -I${DIST}/gdb \ -I${DIST}/gdb/config \ Index: src/sbin/mount_ffs/Makefile diff -u src/sbin/mount_ffs/Makefile:1.9 src/sbin/mount_ffs/Makefile:1.10 --- src/sbin/mount_ffs/Makefile:1.9 Tue Aug 5 20:57:45 2008 +++ src/sbin/mount_ffs/Makefile Sun Apr 10 16:47:05 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.9 2008/08/05 20:57:45 pooka Exp $ +# $NetBSD: Makefile,v 1.10 2011/04/10 16:47:05 joerg Exp $ .include bsd.own.mk @@ -10,7 +10,7 @@ LINKS= ${BINDIR}/mount_ffs ${BINDIR}/mount_ufs MOUNT= ${NETBSDSRCDIR}/sbin/mount -CPPFLAGS=-I${MOUNT} +CPPFLAGS+=-I${MOUNT} .PATH: ${MOUNT} DPADD+=${LIBUTIL} Index: src/sbin/mount_hfs/Makefile diff -u src/sbin/mount_hfs/Makefile:1.3 src/sbin/mount_hfs/Makefile:1.4 --- src/sbin/mount_hfs/Makefile:1.3 Tue Aug 5 20:57:45 2008 +++ src/sbin/mount_hfs/Makefile Sun Apr 10 16:47:05 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.3 2008/08/05 20:57:45 pooka Exp $ +# $NetBSD: Makefile,v 1.4 2011/04/10 16:47:05 joerg Exp $ .include bsd.own.mk @@ -7,7 +7,7 @@ MAN= mount_hfs.8 MOUNT= ${NETBSDSRCDIR}/sbin/mount -CPPFLAGS=-I${MOUNT} +CPPFLAGS+=-I${MOUNT} .PATH: ${MOUNT} DPADD+=${LIBUTIL} Index: src/sbin/mount_nfs/Makefile diff -u src/sbin/mount_nfs/Makefile:1.23 src/sbin/mount_nfs/Makefile:1.24 --- src/sbin/mount_nfs/Makefile:1.23 Fri Mar 5 19:53:37 2010 +++ src/sbin/mount_nfs/Makefile Sun Apr 10 16:47:05 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.23 2010/03/05 19:53:37 pooka Exp $ +# $NetBSD: Makefile,v 1.24 2011/04/10 16:47:05 joerg Exp $ # @(#)Makefile 8.2 (Berkeley) 3/27/94 .include bsd.own.mk @@ -9,7 +9,7 @@ MAN= mount_nfs.8 MOUNT= ${NETBSDSRCDIR}/sbin/mount -CPPFLAGS=-I${MOUNT} +CPPFLAGS+=-I${MOUNT} .PATH: ${MOUNT} .ifndef SMALLPROG
CVS commit: src/lib/libbsdmalloc
Module Name:src Committed By: joerg Date: Sun Apr 10 16:47:39 UTC 2011 Modified Files: src/lib/libbsdmalloc: Makefile Log Message: Define _REENT. Extend CPPFLAGS. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/lib/libbsdmalloc/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libbsdmalloc/Makefile diff -u src/lib/libbsdmalloc/Makefile:1.2 src/lib/libbsdmalloc/Makefile:1.3 --- src/lib/libbsdmalloc/Makefile:1.2 Thu Jul 10 11:27:45 2003 +++ src/lib/libbsdmalloc/Makefile Sun Apr 10 16:47:39 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2003/07/10 11:27:45 lukem Exp $ +# $NetBSD: Makefile,v 1.3 2011/04/10 16:47:39 joerg Exp $ NOMAN=1 @@ -7,7 +7,6 @@ LIB= bsdmalloc SRCS= malloc.c -CPPFLAGS= -D_REENTRANT -CPPFLAGS= -I${.CURDIR}/../libc/include/ +CPPFLAGS+= -D_REENT -D_REENTRANT -I${.CURDIR}/../libc/include/ .include bsd.lib.mk
CVS commit: src/gnu/dist/gcc4/gcc
Module Name:src Committed By: joerg Date: Sun Apr 10 16:48:52 UTC 2011 Modified Files: src/gnu/dist/gcc4/gcc: Makefile.in Log Message: Don't install limits.h. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/gnu/dist/gcc4/gcc/Makefile.in Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/gnu/dist/gcc4/gcc/Makefile.in diff -u src/gnu/dist/gcc4/gcc/Makefile.in:1.9 src/gnu/dist/gcc4/gcc/Makefile.in:1.10 --- src/gnu/dist/gcc4/gcc/Makefile.in:1.9 Thu Mar 24 13:31:30 2011 +++ src/gnu/dist/gcc4/gcc/Makefile.in Sun Apr 10 16:48:51 2011 @@ -3147,9 +3147,9 @@ chmod a+r include/$$realfile; \ fi; \ done; \ - rm -f include/limits.h; \ - chmod a+r include/limits.h; fi - cp xlimits.h include/limits.h + true || rm -f include/limits.h; \ + true || chmod a+r include/limits.h; fi + true || cp xlimits.h include/limits.h cp $(UNWIND_H) include/unwind.h # Install the README rm -f include/README
CVS commit: src/gnu/dist/gcc4/gcc
Module Name:src Committed By: joerg Date: Sun Apr 10 16:50:18 UTC 2011 Modified Files: src/gnu/dist/gcc4/gcc: gcc.c src/gnu/dist/gcc4/gcc/config: netbsd.h Log Message: Reduce difference between src/tools/gcc and src/gnu/usr.bin/gcc4 configuration. All but the target to helper programs should be the same. Mark include directories as sysroot-relative. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/gnu/dist/gcc4/gcc/gcc.c cvs rdiff -u -r1.6 -r1.7 src/gnu/dist/gcc4/gcc/config/netbsd.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/gnu/dist/gcc4/gcc/gcc.c diff -u src/gnu/dist/gcc4/gcc/gcc.c:1.4 src/gnu/dist/gcc4/gcc/gcc.c:1.5 --- src/gnu/dist/gcc4/gcc/gcc.c:1.4 Thu Jan 11 06:59:53 2007 +++ src/gnu/dist/gcc4/gcc/gcc.c Sun Apr 10 16:50:18 2011 @@ -6277,7 +6277,7 @@ PREFIX_PRIORITY_LAST, 0, 1); else if (*cross_compile == '0') { -#ifndef NETBSD_NATIVE +#if !defined(NETBSD_NATIVE) !defined(NETBSD_TOOLS) if (gcc_exec_prefix) add_prefix (startfile_prefixes, concat (gcc_exec_prefix, machine_suffix, @@ -6295,7 +6295,7 @@ #endif /* NETBSD_NATIVE */ } -#ifndef NETBSD_NATIVE +#if !defined(NETBSD_NATIVE) !defined(NETBSD_TOOLS) if (*standard_startfile_prefix_1) add_sysrooted_prefix (startfile_prefixes, standard_startfile_prefix_1, BINUTILS, Index: src/gnu/dist/gcc4/gcc/config/netbsd.h diff -u src/gnu/dist/gcc4/gcc/config/netbsd.h:1.6 src/gnu/dist/gcc4/gcc/config/netbsd.h:1.7 --- src/gnu/dist/gcc4/gcc/config/netbsd.h:1.6 Sun Apr 27 23:49:27 2008 +++ src/gnu/dist/gcc4/gcc/config/netbsd.h Sun Apr 10 16:50:18 2011 @@ -43,9 +43,13 @@ /* NETBSD_NATIVE is defined when gcc is integrated into the NetBSD source tree so it can be configured appropriately without using - the GNU configure/build mechanism. */ + the GNU configure/build mechanism. -#ifdef NETBSD_NATIVE + NETBSD_TOOLS is defined when gcc is built as cross-compiler for + the in-tree toolchain. + */ + +#if defined(NETBSD_NATIVE) || defined(NETBSD_TOOLS) /* Look for the include files in the system-defined places. */ @@ -61,23 +65,28 @@ #undef INCLUDE_DEFAULTS #define INCLUDE_DEFAULTS\ { \ -{ GPLUSPLUS_INCLUDE_DIR, G++, 1, 1 }, \ -{ GPLUSPLUS_BACKWARD_INCLUDE_DIR, G++, 1, 1 }, \ -{ GCC_INCLUDE_DIR, GCC, 0, 0 }, \ +{ GPLUSPLUS_INCLUDE_DIR, G++, 1, 1, 1 }, \ +{ GPLUSPLUS_BACKWARD_INCLUDE_DIR, G++, 1, 1, 1 }, \ +{ GCC_INCLUDE_DIR, GCC, 0, 0, 1 }, \ { 0, 0, 0, 0 } \ } -/* Under NetBSD, the normal location of the compiler back ends is the - /usr/libexec directory. */ - -#undef STANDARD_EXEC_PREFIX -#define STANDARD_EXEC_PREFIX /usr/libexec/ - /* Under NetBSD, the normal location of the various *crt*.o files is the /usr/lib directory. */ #undef STANDARD_STARTFILE_PREFIX #define STANDARD_STARTFILE_PREFIX /usr/lib/ +#undef STANDARD_STARTFILE_PREFIX_1 +#define STANDARD_STARTFILE_PREFIX_1 /usr/lib/ + +#endif /* NETBSD_NATIVE || NETBSD_TOOLS */ + +#if defined(NETBSD_NATIVE) +/* Under NetBSD, the normal location of the compiler back ends is the + /usr/libexec directory. */ + +#undef STANDARD_EXEC_PREFIX +#define STANDARD_EXEC_PREFIX /usr/libexec/ #undef TOOLDIR_BASE_PREFIX #define TOOLDIR_BASE_PREFIX /usr/ @@ -87,7 +96,6 @@ #undef STANDARD_LIBEXEC_PREFIX #define STANDARD_LIBEXEC_PREFIX STANDARD_EXEC_PREFIX - #endif /* NETBSD_NATIVE */
CVS commit: src
Module Name:src Committed By: joerg Date: Sun Apr 10 16:52:36 UTC 2011 Modified Files: src/share/mk: bsd.dep.mk bsd.lib.mk bsd.own.mk bsd.prog.mk bsd.x11.mk src/tools: Makefile.host Log Message: For USETOOLS=yes, use the --sysroot support of the compiler to cut down the number of hard-coded pathes and magic invocations. To generate a diff of this commit: cvs rdiff -u -r1.71 -r1.72 src/share/mk/bsd.dep.mk cvs rdiff -u -r1.312 -r1.313 src/share/mk/bsd.lib.mk cvs rdiff -u -r1.653 -r1.654 src/share/mk/bsd.own.mk cvs rdiff -u -r1.262 -r1.263 src/share/mk/bsd.prog.mk cvs rdiff -u -r1.94 -r1.95 src/share/mk/bsd.x11.mk cvs rdiff -u -r1.27 -r1.28 src/tools/Makefile.host Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/share/mk/bsd.dep.mk diff -u src/share/mk/bsd.dep.mk:1.71 src/share/mk/bsd.dep.mk:1.72 --- src/share/mk/bsd.dep.mk:1.71 Sun Feb 6 00:52:49 2011 +++ src/share/mk/bsd.dep.mk Sun Apr 10 16:52:36 2011 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.dep.mk,v 1.71 2011/02/06 00:52:49 joerg Exp $ +# $NetBSD: bsd.dep.mk,v 1.72 2011/04/10 16:52:36 joerg Exp $ # Basic targets cleandir: cleandepend @@ -57,8 +57,6 @@ ${_MKTARGET_CREATE} ${MKDEP} -f ${.TARGET} -- ${MKDEPFLAGS} \ ${CXXFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ - ${HOSTLIB:U${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} \ - ${DESTDIR}/usr/include/g++}} \ ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} .endif # defined(SRCS) # } Index: src/share/mk/bsd.lib.mk diff -u src/share/mk/bsd.lib.mk:1.312 src/share/mk/bsd.lib.mk:1.313 --- src/share/mk/bsd.lib.mk:1.312 Thu Feb 10 21:55:33 2011 +++ src/share/mk/bsd.lib.mk Sun Apr 10 16:52:36 2011 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.lib.mk,v 1.312 2011/02/10 21:55:33 matt Exp $ +# $NetBSD: bsd.lib.mk,v 1.313 2011/04/10 16:52:36 joerg Exp $ # @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 .include bsd.init.mk @@ -63,17 +63,6 @@ # Build and install rules MKDEP_SUFFIXES?= .o .po .pico .go .ln -# Use purely kernel private headers in rump builds -# Skip NetBSD headers for the toolchain builds -.if !defined(RUMPKERNEL) !defined(HOSTLIB) -.if empty(CPPFLAGS:M-nostdinc) -CPPFLAGS+= ${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include} -.endif -.if empty(CXXFLAGS:M-nostdinc++) -CXXFLAGS+= ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} ${DESTDIR}/usr/include/g++} -.endif -.endif - .if !defined(SHLIB_MAJOR) exists(${SHLIB_VERSION_FILE}) # { SHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major SHLIB_MINOR != . ${SHLIB_VERSION_FILE} ; echo $$minor @@ -522,12 +511,12 @@ _LIBLDOPTS= .if ${SHLIBDIR} != /usr/lib -_LIBLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBDIR}:${DESTDIR}/usr/lib \ - -Wl,-rpath,${SHLIBDIR} \ - -L${DESTDIR}${SHLIBDIR} +_LIBLDOPTS+= -Wl,-rpath-link,=${SHLIBDIR} \ + -Wl,-rpath,=${SHLIBDIR} \ + -L=${SHLIBDIR} .elif ${SHLIBINSTALLDIR} != /usr/lib -_LIBLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR}:${DESTDIR}/usr/lib \ - -L${DESTDIR}${SHLIBINSTALLDIR} +_LIBLDOPTS+= -Wl,-rpath-link,=${SHLIBINSTALLDIR} \ + -L=${SHLIBINSTALLDIR} .endif # gcc -shared now adds -lc automatically. For libraries other than libc and @@ -565,18 +554,9 @@ ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE} ${_MKTARGET_BUILD} rm -f lib${LIB}.so.${SHLIB_FULLVERSION} -.if defined(DESTDIR) - ${LIBCC} ${LDLIBC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}${SHLIBDIR}/ \ - -Wl,-x -shared ${SHLIB_SHFLAGS} -o ${.TARGET} \ - -Wl,--whole-archive ${SOLIB} \ - -Wl,--no-whole-archive ${_LDADD.lib${LIB}} \ - ${_LIBLDOPTS} ${_LDFLAGS.lib${LIB}} \ - -L${_GCC_LIBGCCDIR} -.else ${LIBCC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${_LDFLAGS.lib${LIB}} \ -o ${.TARGET} ${_LIBLDOPTS} \ -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${_LDADD.lib${LIB}} -.endif # We don't use INSTALL_SYMLINK here because this is just # happening inside the build directory/objdir. XXX Why does # this spend so much effort on libraries that aren't live??? XXX Index: src/share/mk/bsd.own.mk diff -u src/share/mk/bsd.own.mk:1.653 src/share/mk/bsd.own.mk:1.654 --- src/share/mk/bsd.own.mk:1.653 Tue Mar 8 12:20:17 2011 +++ src/share/mk/bsd.own.mk Sun Apr 10 16:52:36 2011 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.own.mk,v 1.653 2011/03/08 12:20:17 njoly Exp $ +# $NetBSD: bsd.own.mk,v 1.654 2011/04/10 16:52:36 joerg Exp $ # This needs to be before bsd.init.mk .if defined(BSD_MK_COMPAT_FILE) @@ -64,15 +64,6 @@ # default to binutils 2.19 HAVE_BINUTILS?= 219 -CPPFLAG_ISYSTEM= -isystem -.if defined(HAVE_GCC) -.if ${HAVE_GCC} == 3 -CPPFLAG_ISYSTEMXX= -isystem-cxx -.else # GCC 4 -CPPFLAG_ISYSTEMXX= -cxx-isystem -.endif -.endif - .if empty(.MAKEFLAGS:M-V*) .if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) PRINTOBJDIR= ${MAKE} -r -V .OBJDIR -f /dev/null xxx @@ -216,6 +207,8 @@ OBJC= false .endif +CPPFLAGS+= ${HOSTPROG:U${HOSTLIB:U${DESTDIR:D--sysroot=${DESTDIR
CVS commit: src
Module Name:src Committed By: joerg Date: Sun Apr 10 20:22:33 UTC 2011 Modified Files: src: UPDATING Log Message: Add a generic note about GCC's error on changed variables and a specific entry for the sysroot related changes breaking MKUPDATE. To generate a diff of this commit: cvs rdiff -u -r1.222 -r1.223 src/UPDATING Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/UPDATING diff -u src/UPDATING:1.222 src/UPDATING:1.223 --- src/UPDATING:1.222 Sun Apr 10 08:29:31 2011 +++ src/UPDATING Sun Apr 10 20:22:32 2011 @@ -1,4 +1,4 @@ -$NetBSD: UPDATING,v 1.222 2011/04/10 08:29:31 plunky Exp $ +$NetBSD: UPDATING,v 1.223 2011/04/10 20:22:32 joerg Exp $ This file (UPDATING) is intended to be a brief reference to recent changes that might cause problems in the build process, and a guide for @@ -15,6 +15,11 @@ Recent changes: ^^^ +20110410: + The configuration of src/tools/gcc has changed. Update builds + have to remove the stale content explicitly. See the note toward + the end of the file for details. + 20110328: Building the Xorg binary was moved into a subdirectory to fix ordering issues with make all. It may be necessary to remove @@ -540,3 +545,7 @@ Symptom:lint does not understand the '-X' option Fix:May need to build install libs with NOLINT=1 before rebuilding lint + +Symptom:Update build fails in src/tools/gcc complaining that a variable + (e.g. CPPFLAGS) has changed since the previous run. +Fix:Run nbmake-${ARCH} clean in src/tools/gcc or do a clean build.
CVS commit: src/sys/arch
Module Name:src Committed By: christos Date: Sun Apr 10 20:36:49 UTC 2011 Modified Files: src/sys/arch/amd64/amd64: db_disasm.c src/sys/arch/amd64/conf: files.amd64 src/sys/arch/amd64/include: db_machdep.h src/sys/arch/i386/conf: files.i386 src/sys/arch/i386/include: db_machdep.h src/sys/arch/x86/conf: files.x86 Added Files: src/sys/arch/amd64/amd64: db_machdep.c src/sys/arch/i386/i386: db_machdep.c src/sys/arch/x86/include: db_machdep.h src/sys/arch/x86/x86: db_trace.c Removed Files: src/sys/arch/amd64/amd64: db_trace.c src/sys/arch/i386/i386: db_trace.c Log Message: Merge db_trace for x86. From: Vladimir Kirillov proger at wilab dot org dot ua To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/amd64/amd64/db_disasm.c cvs rdiff -u -r0 -r1.1 src/sys/arch/amd64/amd64/db_machdep.c cvs rdiff -u -r1.18 -r0 src/sys/arch/amd64/amd64/db_trace.c cvs rdiff -u -r1.71 -r1.72 src/sys/arch/amd64/conf/files.amd64 cvs rdiff -u -r1.9 -r1.10 src/sys/arch/amd64/include/db_machdep.h cvs rdiff -u -r1.356 -r1.357 src/sys/arch/i386/conf/files.i386 cvs rdiff -u -r0 -r1.1 src/sys/arch/i386/i386/db_machdep.c cvs rdiff -u -r1.66 -r0 src/sys/arch/i386/i386/db_trace.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/i386/include/db_machdep.h cvs rdiff -u -r1.66 -r1.67 src/sys/arch/x86/conf/files.x86 cvs rdiff -u -r0 -r1.1 src/sys/arch/x86/include/db_machdep.h cvs rdiff -u -r0 -r1.1 src/sys/arch/x86/x86/db_trace.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/arch/amd64/amd64/db_disasm.c diff -u src/sys/arch/amd64/amd64/db_disasm.c:1.14 src/sys/arch/amd64/amd64/db_disasm.c:1.15 --- src/sys/arch/amd64/amd64/db_disasm.c:1.14 Fri Feb 18 13:00:52 2011 +++ src/sys/arch/amd64/amd64/db_disasm.c Sun Apr 10 16:36:49 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_disasm.c,v 1.14 2011/02/18 18:00:52 drochner Exp $ */ +/* $NetBSD: db_disasm.c,v 1.15 2011/04/10 20:36:49 christos Exp $ */ /* * Mach Operating System @@ -33,10 +33,9 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.14 2011/02/18 18:00:52 drochner Exp $); +__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.15 2011/04/10 20:36:49 christos Exp $); #ifndef _KERNEL -#include stubs.h #include sys/types.h #include sys/time.h #include sys/ksyms.h Index: src/sys/arch/amd64/conf/files.amd64 diff -u src/sys/arch/amd64/conf/files.amd64:1.71 src/sys/arch/amd64/conf/files.amd64:1.72 --- src/sys/arch/amd64/conf/files.amd64:1.71 Mon Apr 4 17:35:31 2011 +++ src/sys/arch/amd64/conf/files.amd64 Sun Apr 10 16:36:49 2011 @@ -1,4 +1,4 @@ -# $NetBSD: files.amd64,v 1.71 2011/04/04 21:35:31 dyoung Exp $ +# $NetBSD: files.amd64,v 1.72 2011/04/10 20:36:49 christos Exp $ # # new style config file for amd64 architecture # @@ -34,9 +34,9 @@ file arch/amd64/amd64/cpu_in_cksum.S (inet | inet6) cpu_in_cksum file arch/amd64/amd64/cpufunc.S file arch/amd64/amd64/db_disasm.c ddb -file arch/amd64/amd64/db_interface.c ddb +file arch/amd64/amd64/db_interface.c ddb +file arch/amd64/amd64/db_machdep.c ddb file arch/amd64/amd64/db_memrw.c ddb | kgdb -file arch/amd64/amd64/db_trace.c ddb file arch/amd64/amd64/kobj_machdep.c modular file arch/amd64/amd64/kgdb_machdep.c kgdb file kern/subr_disk_mbr.c disk Index: src/sys/arch/amd64/include/db_machdep.h diff -u src/sys/arch/amd64/include/db_machdep.h:1.9 src/sys/arch/amd64/include/db_machdep.h:1.10 --- src/sys/arch/amd64/include/db_machdep.h:1.9 Sat Mar 14 10:45:54 2009 +++ src/sys/arch/amd64/include/db_machdep.h Sun Apr 10 16:36:49 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.9 2009/03/14 14:45:54 dsl Exp $ */ +/* $NetBSD: db_machdep.h,v 1.10 2011/04/10 20:36:49 christos Exp $ */ /* * Mach Operating System @@ -44,6 +44,13 @@ typedef long db_expr_t; /* expression - signed */ typedef struct trapframe db_regs_t; + +struct x86_64_frame { + struct x86_64_frame *f_frame; + long f_retaddr; + long f_arg0; +}; + #ifndef MULTIPROCESSOR extern db_regs_t ddb_regs; /* register state */ #define DDB_REGS (ddb_regs) @@ -125,10 +132,12 @@ int kdb_trap(int, int, db_regs_t *); +#ifdef _KERNEL /* * We define some of our own commands */ #define DB_MACHINE_COMMANDS +#endif #define DB_ELF_SYMBOLS #define DB_ELFSIZE 64 Index: src/sys/arch/i386/conf/files.i386 diff -u src/sys/arch/i386/conf/files.i386:1.356 src/sys/arch/i386/conf/files.i386:1.357 --- src/sys/arch/i386/conf/files.i386:1.356 Thu Feb 24 05:56:01 2011 +++ src/sys/arch/i386/conf/files.i386 Sun Apr 10 16:36:48 2011 @@ -1,4 +1,4 @@ -# $NetBSD: files.i386,v 1.356 2011/02/24 10:56:01 jruoho Exp $ +# $NetBSD: files.i386,v 1.357 2011/04/10 20:36:48 christos Exp $ # # new style config file for i386 architecture # @@ -67,8 +67,8 @@ file arch/i386/i386/db_dbgreg.S ddb | kstack_check_dr0 file arch/i386/i386/db_disasm.c ddb file
CVS commit: src/sys/arch/x86/include
Module Name:src Committed By: christos Date: Sun Apr 10 20:38:37 UTC 2011 Modified Files: src/sys/arch/x86/include: db_machdep.h Log Message: something ate my / To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/x86/include/db_machdep.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/x86/include/db_machdep.h diff -u src/sys/arch/x86/include/db_machdep.h:1.1 src/sys/arch/x86/include/db_machdep.h:1.2 --- src/sys/arch/x86/include/db_machdep.h:1.1 Sun Apr 10 16:36:48 2011 +++ src/sys/arch/x86/include/db_machdep.h Sun Apr 10 16:38:37 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.1 2011/04/10 20:36:48 christos Exp $ * +/* $NetBSD: db_machdep.h,v 1.2 2011/04/10 20:38:37 christos Exp $ */ #ifndef _X86_DB_MACHDEP_H_ #define _X86_DB_MACHDEP_H_
CVS commit: src/usr.sbin/crash
Module Name:src Committed By: christos Date: Sun Apr 10 20:39:43 UTC 2011 Modified Files: src/usr.sbin/crash: Makefile crash.c Log Message: - amd64 support - fix end of file handling From: Vladimir Kirillov proger at wilab dot org dot ua To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/usr.sbin/crash/Makefile cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/crash/crash.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.sbin/crash/Makefile diff -u src/usr.sbin/crash/Makefile:1.6 src/usr.sbin/crash/Makefile:1.7 --- src/usr.sbin/crash/Makefile:1.6 Mon Mar 21 01:09:33 2011 +++ src/usr.sbin/crash/Makefile Sun Apr 10 16:39:42 2011 @@ -1,24 +1,23 @@ -# $NetBSD: Makefile,v 1.6 2011/03/21 05:09:33 joerg Exp $ +# $NetBSD: Makefile,v 1.7 2011/04/10 20:39:42 christos Exp $ -PROG= crash -MAN= crash.8 +PROG= crash +MAN= crash.8 RUMPKERNEL= yes # XXX: Avoid -mcmodel=kernel -LDADD+= -lkvm -ledit -lterminfo -T${.CURDIR}/ldscript.crash -DPADD+= ${LIBKVM} ${LIBEDIT} ${LIBTERMINFO} +LDADD+= -lutil -lkvm -ledit -lterminfo -T${.CURDIR}/ldscript.crash +DPADD+= ${LIBUTIL} ${LIBKVM} ${LIBEDIT} ${LIBTERMINFO} # some ddb kernel components need limited modifications. for now, # punt if not noted as implemented here. -.if (${MACHINE} != i386) - +.if !empty(${MACHINE:C/(amd64|i386)//}) SRCS+= unsupported.c - .else -S= ${.CURDIR}/../../sys +S= ${.CURDIR}/../../sys CPPFLAGS+= -I${.CURDIR} -I${.OBJDIR} -I${S} -fno-strict-aliasing CPPFLAGS+= -DDDB_VERBOSE_HELP -DDB_MAX_LINE=1000 -D_KMEMUSER +CPPFLAGS+= -DDB_AOUT_SYMBOLS -UDB_MACHINE_COMMANDS # ddb files from kernel .PATH: $S/ddb @@ -27,24 +26,24 @@ SRCS+= db_expr.c db_lex.c db_output.c db_print.c SRCS+= db_sym.c db_variables.c db_write_cmd.c -# db_trace.c, db_disasm.c -.PATH: ${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -.for i in ${i} db_disasm db_trace -. if (exists(${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}/${i}.c)) -SRCS+= ${i}.c +.PATH: ${S}/arch/${MACHINE}/${MACHINE} +SRCS+= db_machdep.c db_disasm.c + +. if empty(${MACHINE:C/(amd64|i386)//}) +.PATH: ${S}/arch/x86/x86 +SRCS+= db_trace.c . endif -.endfor # crash main source SRCS+= crash.c # arch.c .PATH: ${.CURDIR}/arch -.if (exists(${.CURDIR}/arch/${MACHINE_ARCH}.c)) +. if (exists(${.CURDIR}/arch/${MACHINE_ARCH}.c)) SRCS+= ${MACHINE_ARCH}.c -.else +. else SRCS+= generic.c -.endif +. endif # vers.c SRCS+= vers.c Index: src/usr.sbin/crash/crash.c diff -u src/usr.sbin/crash/crash.c:1.2 src/usr.sbin/crash/crash.c:1.3 --- src/usr.sbin/crash/crash.c:1.2 Thu Apr 16 02:52:08 2009 +++ src/usr.sbin/crash/crash.c Sun Apr 10 16:39:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: crash.c,v 1.2 2009/04/16 06:52:08 lukem Exp $ */ +/* $NetBSD: crash.c,v 1.3 2011/04/10 20:39:42 christos Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include sys/cdefs.h #ifndef lint -__RCSID($NetBSD: crash.c,v 1.2 2009/04/16 06:52:08 lukem Exp $); +__RCSID($NetBSD: crash.c,v 1.3 2011/04/10 20:39:42 christos Exp $); #endif /* not lint */ #include ddb/ddb.h @@ -52,18 +52,20 @@ #include kvm.h #include err.h #include ctype.h +#include util.h #include extern.h #define MAXSTAB (16 * 1024 * 1024) -static kvm_t *kd; db_regs_t ddb_regs; -History *hist; -HistEvent he; -EditLine *elptr; -char imgrelease[16]; -FILE *ofp; + +static kvm_t *kd; +static History *hist; +static HistEvent he; +static EditLine *elptr; +static char imgrelease[16]; +static FILE *ofp; static struct nlist nl[] = { #define X_OSRELEASE 0 @@ -73,6 +75,18 @@ { .n_name = NULL }, }; +static void +cleanup(void) +{ + if (ofp != stdout) { + (void)fflush(ofp); + (void)pclose(ofp); + ofp = stdout; + } + el_end(elptr); + history_end(hist); +} + void db_vprintf(const char *fmt, va_list ap) { @@ -121,14 +135,14 @@ db_alloc(size_t sz) { - return malloc(sz); + return emalloc(sz); } void * db_zalloc(size_t sz) { - return calloc(1, sz); + return ecalloc(1, sz); } void @@ -231,9 +245,8 @@ /* Read next command. */ el = el_gets(elptr, cnt); - if (el == NULL) { - *lstart = '\0'; - return 0; + if (el == NULL) { /* EOF */ + exit(EXIT_SUCCESS); } /* Save to history, and copy to caller's buffer. */ @@ -255,7 +268,7 @@ /* Open a pipe to specified command, redirect output. */ assert(ofp == stdout); - for (*pcmd++ = '\0'; isspace((int)*pcmd); pcmd++) { + for (*pcmd++ = '\0'; isspace((unsigned char)*pcmd); pcmd++) { /* nothing */ } errno = 0; @@ -323,6 +336,8 @@ memf = _PATH_MEM; ofp = stdout; + setprogname(argv[0]); + /* * Parse options. */ @@ -354,31 +369,30 @@ return EXIT_FAILURE; } fd = open(nlistf, O_RDONLY); - if (fd 0) { - err(EXIT_FAILURE, open(%s), nlistf); + if (fd == -1) { + err(EXIT_FAILURE, open `%s', nlistf); } - if (fstat(fd, sb) 0) { - err(EXIT_FAILURE, stat(%s), nlistf); + if (fstat(fd, sb) == -1) { +
CVS commit: src/sys/ddb
Module Name:src Committed By: christos Date: Sun Apr 10 20:59:22 UTC 2011 Modified Files: src/sys/ddb: db_command.c db_interface.h db_proc.c Log Message: Add: usage: show proc [/a] [/p] address|pid /a == argument is an address of any lwp /p == argument is a pid [default] From: Vladimir Kirillov proger at wilab dot org dot ua To generate a diff of this commit: cvs rdiff -u -r1.134 -r1.135 src/sys/ddb/db_command.c cvs rdiff -u -r1.25 -r1.26 src/sys/ddb/db_interface.h cvs rdiff -u -r1.3 -r1.4 src/sys/ddb/db_proc.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/ddb/db_command.c diff -u src/sys/ddb/db_command.c:1.134 src/sys/ddb/db_command.c:1.135 --- src/sys/ddb/db_command.c:1.134 Mon Sep 13 04:42:04 2010 +++ src/sys/ddb/db_command.c Sun Apr 10 16:59:22 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_command.c,v 1.134 2010/09/13 08:42:04 drochner Exp $ */ +/* $NetBSD: db_command.c,v 1.135 2011/04/10 20:59:22 christos Exp $ */ /* * Copyright (c) 1996, 1997, 1998, 1999, 2002, 2009 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: db_command.c,v 1.134 2010/09/13 08:42:04 drochner Exp $); +__KERNEL_RCSID(0, $NetBSD: db_command.c,v 1.135 2011/04/10 20:59:22 christos Exp $); #ifdef _KERNEL_OPT #include opt_aio.h @@ -219,10 +219,12 @@ #endif { DDB_ADD_CMD(pages, db_show_all_pages, 0 ,List all used memory pages.,NULL,NULL) }, + { DDB_ADD_CMD(proc, db_show_proc, + 0 ,Print process information.,NULL,NULL) }, { DDB_ADD_CMD(procs, db_show_all_procs, 0 ,List all processes.,NULL,NULL) }, { DDB_ADD_CMD(pools, db_show_all_pools, - 0 ,Show all poolS,NULL,NULL) }, + 0 ,Show all pools,NULL,NULL) }, #ifdef AIO /*added from all sub cmds*/ { DDB_ADD_CMD(aio_jobs, db_show_aio_jobs, 0, Index: src/sys/ddb/db_interface.h diff -u src/sys/ddb/db_interface.h:1.25 src/sys/ddb/db_interface.h:1.26 --- src/sys/ddb/db_interface.h:1.25 Wed Feb 18 08:31:59 2009 +++ src/sys/ddb/db_interface.h Sun Apr 10 16:59:22 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_interface.h,v 1.25 2009/02/18 13:31:59 yamt Exp $ */ +/* $NetBSD: db_interface.h,v 1.26 2011/04/10 20:59:22 christos Exp $ */ /*- * Copyright (c) 1995 The NetBSD Foundation, Inc. @@ -46,6 +46,7 @@ /* kern/kern_proc.c */ void db_kill_proc(db_expr_t, bool, db_expr_t, const char *); +void db_show_proc(db_expr_t, bool, db_expr_t, const char *); void db_show_all_procs(db_expr_t, bool, db_expr_t, const char *); void db_show_all_pools(db_expr_t, bool, db_expr_t, const char *); void db_show_sched_qs(db_expr_t, bool, db_expr_t, const char *); Index: src/sys/ddb/db_proc.c diff -u src/sys/ddb/db_proc.c:1.3 src/sys/ddb/db_proc.c:1.4 --- src/sys/ddb/db_proc.c:1.3 Mon Mar 9 02:07:05 2009 +++ src/sys/ddb/db_proc.c Sun Apr 10 16:59:22 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_proc.c,v 1.3 2009/03/09 06:07:05 mrg Exp $ */ +/* $NetBSD: db_proc.c,v 1.4 2011/04/10 20:59:22 christos Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: db_proc.c,v 1.3 2009/03/09 06:07:05 mrg Exp $); +__KERNEL_RCSID(0, $NetBSD: db_proc.c,v 1.4 2011/04/10 20:59:22 christos Exp $); #ifndef _KERNEL #include stdbool.h @@ -129,8 +129,8 @@ if (mode == NULL || *mode == 'm') { db_printf(usage: show all procs [/a] [/l] [/n] [/w]\n); db_printf(\t/a == show process address info\n); - db_printf(\t/l == show LWP info\n); - db_printf(\t/n == show normal process info [default]\n); + db_printf(\t/l == show LWP info [default]\n); + db_printf(\t/n == show normal process info\n); db_printf(\t/w == show process wait/emul info\n); return; } @@ -257,3 +257,86 @@ } } +void +db_show_proc(db_expr_t addr, bool haddr, db_expr_t count, const char *modif) +{ + static proc_t p; + static lwp_t l; + const char *mode; + proc_t *pp; + lwp_t *lp; + char db_nbuf[MAXCOMLEN + 1], wbuf[MAXCOMLEN + 1]; + bool run; + int cpuno; + + if (modif[0] == 0) + mode = p; /* default == by pid */ + else + mode = strchr(ap, modif[0]); + + if (mode == NULL || !haddr) { + db_printf(usage: show proc [/a] [/p] address|pid\n); + db_printf(\t/a == argument is an address of any lwp\n); + db_printf(\t/p == argument is a pid [default]\n); + return; + } + + switch (*mode) { + case 'a': + lp = (lwp_t *)addr; + db_printf(lwp_t %lx\n, (long)lp); + db_read_bytes((db_addr_t)lp, sizeof(l), (char *)l); + pp = l.l_proc; + break; + default: + case 'p': + pp = db_proc_find((pid_t)addr); + lp = NULL; + break; + } + + if (pp == NULL) { + db_printf(bad address\n); + return; + } + + db_read_bytes((db_addr_t)pp, sizeof(p), (char *)p); + if (lp == NULL) + lp = p.p_lwps.lh_first; + + db_printf(%s: pid %d proc %lx vmspace/map %lx flags %x\n, + p.p_comm, p.p_pid, (long)pp, (long)p.p_vmspace, p.p_flag); + + while (lp != NULL) { +
CVS commit: src/share/mk
Module Name:src Committed By: joerg Date: Sun Apr 10 21:03:17 UTC 2011 Modified Files: src/share/mk: bsd.own.mk Log Message: Use ?: operator to determine when to add --sysroot. Unbreaks clang bootstrap. To generate a diff of this commit: cvs rdiff -u -r1.654 -r1.655 src/share/mk/bsd.own.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/share/mk/bsd.own.mk diff -u src/share/mk/bsd.own.mk:1.654 src/share/mk/bsd.own.mk:1.655 --- src/share/mk/bsd.own.mk:1.654 Sun Apr 10 16:52:36 2011 +++ src/share/mk/bsd.own.mk Sun Apr 10 21:03:17 2011 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.own.mk,v 1.654 2011/04/10 16:52:36 joerg Exp $ +# $NetBSD: bsd.own.mk,v 1.655 2011/04/10 21:03:17 joerg Exp $ # This needs to be before bsd.init.mk .if defined(BSD_MK_COMPAT_FILE) @@ -207,8 +207,8 @@ OBJC= false .endif -CPPFLAGS+= ${HOSTPROG:U${HOSTLIB:U${DESTDIR:D--sysroot=${DESTDIR -LDFLAGS+= ${HOSTPROG:U${HOSTLIB:U${DESTDIR:D--sysroot=${DESTDIR +CPPFLAGS+= ${!defined(HOSTPROG) !defined(HOSTLIB) defined(DESTDIR) :? --sysroot=${DESTDIR} :} +LDFLAGS+= ${!defined(HOSTPROG) !defined(HOSTLIB) defined(DESTDIR) :? --sysroot=${DESTDIR} :} .endif # EXTERNAL_TOOLCHAIN # } HOST_MKDEP= ${TOOLDIR}/bin/${_TOOL_PREFIX}host-mkdep
CVS commit: src
Module Name:src Committed By: dholland Date: Sun Apr 10 22:46:09 UTC 2011 Modified Files: src: UPDATING Log Message: Update this weekend's note on cleaning gcc: you need to clean binutils too. To generate a diff of this commit: cvs rdiff -u -r1.223 -r1.224 src/UPDATING Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/UPDATING diff -u src/UPDATING:1.223 src/UPDATING:1.224 --- src/UPDATING:1.223 Sun Apr 10 20:22:32 2011 +++ src/UPDATING Sun Apr 10 22:46:09 2011 @@ -1,4 +1,4 @@ -$NetBSD: UPDATING,v 1.223 2011/04/10 20:22:32 joerg Exp $ +$NetBSD: UPDATING,v 1.224 2011/04/10 22:46:09 dholland Exp $ This file (UPDATING) is intended to be a brief reference to recent changes that might cause problems in the build process, and a guide for @@ -16,9 +16,9 @@ Recent changes: ^^^ 20110410: - The configuration of src/tools/gcc has changed. Update builds - have to remove the stale content explicitly. See the note toward - the end of the file for details. + The configuration of src/tools/gcc has changed. To do an + update build you have to clean both tools/binutils and + tools/gcc by hand. 20110328: Building the Xorg binary was moved into a subdirectory to fix
CVS commit: src/usr.sbin/crash
Module Name:src Committed By: pgoyette Date: Sun Apr 10 22:49:52 UTC 2011 Modified Files: src/usr.sbin/crash: crash.8 Log Message: Synchronize -N option name in Synopsis with that in the Description To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/crash/crash.8 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.sbin/crash/crash.8 diff -u src/usr.sbin/crash/crash.8:1.2 src/usr.sbin/crash/crash.8:1.3 --- src/usr.sbin/crash/crash.8:1.2 Sun Mar 15 21:43:28 2009 +++ src/usr.sbin/crash/crash.8 Sun Apr 10 22:49:52 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: crash.8,v 1.2 2009/03/15 21:43:28 wiz Exp $ +.\ $NetBSD: crash.8,v 1.3 2011/04/10 22:49:52 pgoyette Exp $ .\ .\ Copyright (c) 2009 The NetBSD Foundation, Inc. .\ All rights reserved. @@ -36,7 +36,7 @@ .Sh SYNOPSIS .Nm .Op Fl M Ar core -.Op Fl N Ar system +.Op Fl N Ar kernel .Sh DESCRIPTION The .Nm
CVS commit: src/tests/lib/libcurses/slave
Module Name:src Committed By: dholland Date: Sun Apr 10 23:31:30 UTC 2011 Modified Files: src/tests/lib/libcurses/slave: curses_commands.c Log Message: Fix obvious bug. (note: this file still doesn't build on amd64) To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libcurses/slave/curses_commands.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/tests/lib/libcurses/slave/curses_commands.c diff -u src/tests/lib/libcurses/slave/curses_commands.c:1.1 src/tests/lib/libcurses/slave/curses_commands.c:1.2 --- src/tests/lib/libcurses/slave/curses_commands.c:1.1 Sun Apr 10 09:55:10 2011 +++ src/tests/lib/libcurses/slave/curses_commands.c Sun Apr 10 23:31:30 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: curses_commands.c,v 1.1 2011/04/10 09:55:10 blymn Exp $ */ +/* $NetBSD: curses_commands.c,v 1.2 2011/04/10 23:31:30 dholland Exp $ */ /*- * Copyright 2009 Brett Lymn bl...@netbsd.org @@ -4442,7 +4442,7 @@ void cmd_vwprintw(int nargs, char **args) { - cmd_vwprintw(nargs, args); + cmd_vw_printw(nargs, args); }
CVS commit: src/lib/libc/sys
Module Name:src Committed By: wiz Date: Mon Apr 11 00:21:45 UTC 2011 Modified Files: src/lib/libc/sys: open.2 Log Message: exec is on a higher plane of existence. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/lib/libc/sys/open.2 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/sys/open.2 diff -u src/lib/libc/sys/open.2:1.48 src/lib/libc/sys/open.2:1.49 --- src/lib/libc/sys/open.2:1.48 Sun Apr 10 15:46:15 2011 +++ src/lib/libc/sys/open.2 Mon Apr 11 00:21:45 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: open.2,v 1.48 2011/04/10 15:46:15 christos Exp $ +.\ $NetBSD: open.2,v 1.49 2011/04/11 00:21:45 wiz Exp $ .\ .\ Copyright (c) 1980, 1991, 1993 .\ The Regents of the University of California. All rights reserved. @@ -97,7 +97,7 @@ Set the .Xr close 2 on -.Xr exec 2 +.Xr exec 3 flag. .It Dv O_DSYNC If set, write operations will be performed according to synchronized
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:35:00 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.133 -r1.134 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.133 src/sys/kern/vfs_lookup.c:1.134 --- src/sys/kern/vfs_lookup.c:1.133 Mon Apr 11 01:33:04 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:35:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.133 2011/04/11 01:33:04 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.134 2011/04/11 01:35:00 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.133 2011/04/11 01:33:04 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.134 2011/04/11 01:35:00 dholland Exp $); #include opt_magiclinks.h @@ -591,7 +591,7 @@ * appropriate. */ static int -namei_start(struct namei_state *state, int isnfsd, struct vnode *forcecwd) +namei_start(struct namei_state *state, struct vnode *forcecwd) { struct nameidata *ndp = state-ndp; @@ -609,7 +609,7 @@ ndp-ni_loopcnt = 0; /* Get starting directory, set up root, and ktrace. */ - if (isnfsd) { + if (forcecwd != NULL) { state-namei_startdir = namei_getstartdir_for_nfsd(state, forcecwd); /* no ktrace */ @@ -645,7 +645,7 @@ * Follow a symlink. */ static inline int -namei_follow(struct namei_state *state) +namei_follow(struct namei_state *state, int inhibitmagic) { struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; @@ -690,8 +690,11 @@ /* * Do symlink substitution, if appropriate, and * check length for potential overflow. + * + * Inhibit symlink substitution for nfsd. + * XXX: This is how it was before; is that a bug or a feature? */ - if ((vfs_magiclinks + if ((!inhibitmagic vfs_magiclinks symlink_magic(self-l_proc, cp, linklen)) || (linklen + ndp-ni_pathlen = MAXPATHLEN)) { PNBUF_PUT(cp); @@ -1230,7 +1233,8 @@ // static int -do_namei(struct namei_state *state) +do_namei(struct namei_state *state, struct vnode *forcecwd, + int neverfollow, int inhibitmagic) { int error; @@ -1253,7 +1257,7 @@ savepath = NULL; } - error = namei_start(state, 0/*not nfsd*/, NULL); + error = namei_start(state, forcecwd); if (error) { if (savepath != NULL) { pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); @@ -1302,7 +1306,11 @@ * aren't supposed to. */ if (namei_atsymlink(state)) { - error = namei_follow(state); + if (neverfollow) { +error = EINVAL; + } else { +error = namei_follow(state, inhibitmagic); + } if (error) { KASSERT(ndp-ni_dvp != ndp-ni_vp); vput(ndp-ni_dvp); @@ -1349,7 +1357,7 @@ int error; namei_init(state, ndp); - error = do_namei(state); + error = do_namei(state, NULL, 0/*!neverfollow*/, 0/*!inhibitmagic*/); namei_cleanup(state); return error; @@ -1366,122 +1374,70 @@ * affecting the other. */ -int -lookup_for_nfsd(struct nameidata *ndp, struct vnode *dp, int neverfollow) +static int +do_lookup_for_nfsd(struct namei_state *state, struct vnode *forcecwd, + int neverfollow, int inhibitmagic) { - struct namei_state state; int error; - struct iovec aiov; - struct uio auio; - int linklen; - char *cp; - - namei_init(state, ndp); + struct nameidata *ndp = state-ndp; + //struct componentname *cnp = state-cnp; - namei_start(state, 1/*nfsd*/, dp); + error = namei_start(state, forcecwd); + if (error) { + return error; + } for (;;) { - error = do_lookup(state, dp); + error = do_lookup(state, state-namei_startdir); if (error) { - /* BEGIN from nfsd */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } - /* END from nfsd */ - namei_cleanup(state); return error; } /* - * BEGIN wodge of code from nfsd - */ - - /* * Check for encountering a symbolic link */ - if ((state.cnp-cn_flags ISSYMLINK) == 0) { - if ((state.cnp-cn_flags LOCKPARENT) == 0 state.ndp-ni_dvp) { - if (state.ndp-ni_dvp == state.ndp-ni_vp) { -vrele(state.ndp-ni_dvp); - } else { -vput(state.ndp-ni_dvp); - } - } - return (0); - } else { + if (namei_atsymlink(state)) { if (neverfollow) { error = EINVAL; - goto out; - } - if (state.ndp-ni_loopcnt++ = MAXSYMLINKS) { - error = ELOOP; - goto out; - } - if (state.ndp-ni_vp-v_mount-mnt_flag MNT_SYMPERM) { - error = VOP_ACCESS(ndp-ni_vp, VEXEC, state.cnp-cn_cred); - if (error != 0) -goto out; - } - cp = PNBUF_GET(); - aiov.iov_base = cp; - aiov.iov_len = MAXPATHLEN; - auio.uio_iov = aiov; - auio.uio_iovcnt = 1; - auio.uio_offset = 0; - auio.uio_rw = UIO_READ; - auio.uio_resid = MAXPATHLEN; - UIO_SETUP_SYSSPACE(auio); - error =
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:35:55 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.134 -r1.135 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.134 src/sys/kern/vfs_lookup.c:1.135 --- src/sys/kern/vfs_lookup.c:1.134 Mon Apr 11 01:35:00 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:35:55 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.134 2011/04/11 01:35:00 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.135 2011/04/11 01:35:55 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.134 2011/04/11 01:35:00 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.135 2011/04/11 01:35:55 dholland Exp $); #include opt_magiclinks.h @@ -1372,72 +1372,21 @@ * called from a different place in a different context. For now I * want to be able to shuffle code in from one call site without * affecting the other. + * + * It turns out that the main version was a cut and pasted copy of + * namei with a few changes; the index version on the other hand + * always takes a single component and is an elaborate form of calling + * VOP_LOOKUP once. */ -static int -do_lookup_for_nfsd(struct namei_state *state, struct vnode *forcecwd, - int neverfollow, int inhibitmagic) -{ - int error; - - struct nameidata *ndp = state-ndp; - //struct componentname *cnp = state-cnp; - - error = namei_start(state, forcecwd); - if (error) { - return error; - } - -for (;;) { - - error = do_lookup(state, state-namei_startdir); - - if (error) { - if (ndp-ni_dvp) { - vput(ndp-ni_dvp); - } - return error; - } - - /* - * Check for encountering a symbolic link - */ - if (namei_atsymlink(state)) { - if (neverfollow) { - error = EINVAL; - } else { - error = namei_follow(state, inhibitmagic); - } - if (error) { - KASSERT(ndp-ni_dvp != ndp-ni_vp); - vput(state-ndp-ni_vp); - vput(state-ndp-ni_dvp); - state-ndp-ni_vp = NULL; - return error; - } - } else { - break; - } -} - -if ((state-cnp-cn_flags LOCKPARENT) == 0 state-ndp-ni_dvp) { - if (state-ndp-ni_dvp == state-ndp-ni_vp) { - vrele(state-ndp-ni_dvp); - } else { - vput(state-ndp-ni_dvp); - } -} -return (0); -} - int -lookup_for_nfsd(struct nameidata *ndp, struct vnode *dp, int neverfollow) +lookup_for_nfsd(struct nameidata *ndp, struct vnode *forcecwd, int neverfollow) { struct namei_state state; int error; namei_init(state, ndp); - error = do_lookup_for_nfsd(state, dp, neverfollow, 1/*inhibitmagic*/); + error = do_namei(state, forcecwd, neverfollow, 1/*inhibitmagic*/); namei_cleanup(state); return error; @@ -1450,8 +1399,8 @@ int error; /* - * Note: the name sent in here is not/should not be allowed to - * contain a slash. + * Note: the name sent in here (is not|should not be) allowed + * to contain a slash. */ ndp-ni_pathlen = strlen(ndp-ni_pathbuf-pb_path) + 1;
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:36:28 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.135 -r1.136 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.135 src/sys/kern/vfs_lookup.c:1.136 --- src/sys/kern/vfs_lookup.c:1.135 Mon Apr 11 01:35:55 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:36:28 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.135 2011/04/11 01:35:55 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.136 2011/04/11 01:36:28 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.135 2011/04/11 01:35:55 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.136 2011/04/11 01:36:28 dholland Exp $); #include opt_magiclinks.h @@ -1392,6 +1392,62 @@ return error; } +static int +do_lookup_for_nfsd_index(struct namei_state *state, struct vnode *startdir) +{ + int error = 0; + + struct componentname *cnp = state-cnp; + struct nameidata *ndp = state-ndp; + const char *cp; /* pointer into pathname argument */ + + KASSERT(cnp == ndp-ni_cnd); + + cnp-cn_nameptr = ndp-ni_pnbuf; + state-lookup_alldone = 0; + state-docache = 1; + state-rdonly = cnp-cn_flags RDONLY; + ndp-ni_dvp = NULL; + cnp-cn_flags = ~ISSYMLINK; + state-dp = startdir; + + cnp-cn_consume = 0; + cp = NULL; + cnp-cn_hash = namei_hash(cnp-cn_nameptr, cp); + cnp-cn_namelen = cp - cnp-cn_nameptr; + KASSERT(cnp-cn_namelen = NAME_MAX); + ndp-ni_pathlen -= cnp-cn_namelen; + ndp-ni_next = cp; + state-slashes = 0; + cnp-cn_flags = ~REQUIREDIR; + cnp-cn_flags |= MAKEENTRY|ISLASTCN; + + if (cnp-cn_namelen == 2 + cnp-cn_nameptr[1] == '.' cnp-cn_nameptr[0] == '.') + cnp-cn_flags |= ISDOTDOT; + else + cnp-cn_flags = ~ISDOTDOT; + + error = lookup_once(state); + if (error) { + goto bad; + } + // XXX ought to be able to avoid this case too + if (state-lookup_alldone) { + /* this should NOT be goto terminal; */ + return 0; + } + + if ((cnp-cn_flags LOCKLEAF) == 0) { + VOP_UNLOCK(state-dp); + } + return (0); + +bad: + ndp-ni_vp = NULL; + return (error); +} + int lookup_for_nfsd_index(struct nameidata *ndp, struct vnode *startdir) { @@ -1402,6 +1458,12 @@ * Note: the name sent in here (is not|should not be) allowed * to contain a slash. */ + if (strlen(ndp-ni_pathbuf-pb_path) NAME_MAX) { + return ENAMETOOLONG; + } + if (strchr(ndp-ni_pathbuf-pb_path, '/')) { + return EINVAL; + } ndp-ni_pathlen = strlen(ndp-ni_pathbuf-pb_path) + 1; ndp-ni_pnbuf = NULL; @@ -1410,7 +1472,7 @@ vref(startdir); namei_init(state, ndp); - error = do_lookup(state, startdir); + error = do_lookup_for_nfsd_index(state, startdir); namei_cleanup(state); return error;
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:36:59 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.136 -r1.137 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.136 src/sys/kern/vfs_lookup.c:1.137 --- src/sys/kern/vfs_lookup.c:1.136 Mon Apr 11 01:36:28 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:36:59 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.136 2011/04/11 01:36:28 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.137 2011/04/11 01:36:59 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.136 2011/04/11 01:36:28 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.137 2011/04/11 01:36:59 dholland Exp $); #include opt_magiclinks.h @@ -413,6 +413,8 @@ int rdonly; /* lookup read-only flag bit */ struct vnode *dp; /* the directory we are searching */ int slashes; + + unsigned attempt_retry:1; /* true if error allows emul retry */ }; @@ -1233,35 +1235,15 @@ // static int -do_namei(struct namei_state *state, struct vnode *forcecwd, +namei_oneroot(struct namei_state *state, struct vnode *forcecwd, int neverfollow, int inhibitmagic) { - int error; - struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; - const char *savepath = NULL; - - KASSERT(cnp == ndp-ni_cnd); - - if (cnp-cn_flags TRYEMULROOT) { - savepath = pathbuf_stringcopy_get(ndp-ni_pathbuf); - } - -emul_retry: - - if (savepath != NULL) { - /* kinda gross */ - strcpy(ndp-ni_pathbuf-pb_path, savepath); - pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); - savepath = NULL; - } + int error; error = namei_start(state, forcecwd); if (error) { - if (savepath != NULL) { - pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); - } return error; } @@ -1275,9 +1257,6 @@ * XXX: should this also check if it's unlinked? */ if (state-namei_startdir-v_mount == NULL) { - if (savepath != NULL) { -pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); - } namei_end(state); return (ENOENT); } @@ -1292,12 +1271,16 @@ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } - if (ndp-ni_erootdir != NULL) { -/* Retry the whole thing from the normal root */ -cnp-cn_flags = ~TRYEMULROOT; -goto emul_retry; - } - KASSERT(savepath == NULL); + /* + * Note that if we're doing TRYEMULROOT we can + * retry with the normal root. Setting this + * here matches previous practice, but the + * previous practice didn't make much sense + * and somebody should sit down and figure out + * which cases should cause retry and which + * shouldn't. XXX. + */ + state-attempt_retry = 1; return (error); } @@ -1316,9 +1299,6 @@ vput(ndp-ni_dvp); vput(ndp-ni_vp); ndp-ni_vp = NULL; -if (savepath != NULL) { - pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); -} return error; } } @@ -1343,11 +1323,52 @@ ndp-ni_dvp = NULL; } + return 0; +} + +static int +namei_tryemulroot(struct namei_state *state, struct vnode *forcecwd, + int neverfollow, int inhibitmagic) +{ + int error; + + struct nameidata *ndp = state-ndp; + struct componentname *cnp = state-cnp; + const char *savepath = NULL; + + KASSERT(cnp == ndp-ni_cnd); + + if (cnp-cn_flags TRYEMULROOT) { + savepath = pathbuf_stringcopy_get(ndp-ni_pathbuf); + } + +emul_retry: + state-attempt_retry = 0; + + error = namei_oneroot(state, forcecwd, neverfollow, inhibitmagic); + if (error) { + /* + * Once namei has started up, the existence of ni_erootdir + * tells us whether we're working from an emulation root. + * The TRYEMULROOT flag isn't necessarily authoritative. + */ + if (ndp-ni_erootdir != NULL state-attempt_retry) { + /* Retry the whole thing using the normal root */ + cnp-cn_flags = ~TRYEMULROOT; + state-attempt_retry = 0; + + /* kinda gross */ + strcpy(ndp-ni_pathbuf-pb_path, savepath); + pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); + savepath = NULL; + + goto emul_retry; + } + } if (savepath != NULL) { pathbuf_stringcopy_put(ndp-ni_pathbuf, savepath); } - - return 0; + return error; } int @@ -1357,7 +1378,8 @@ int error; namei_init(state, ndp); - error = do_namei(state, NULL, 0/*!neverfollow*/, 0/*!inhibitmagic*/); + error = namei_tryemulroot(state, NULL, + 0/*!neverfollow*/, 0/*!inhibitmagic*/); namei_cleanup(state); return error; @@ -1386,7 +1408,8 @@ int error; namei_init(state, ndp); - error = do_namei(state, forcecwd, neverfollow, 1/*inhibitmagic*/); + error = namei_tryemulroot(state, forcecwd, + neverfollow, 1/*inhibitmagic*/);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:37:14 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.137 -r1.138 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.137 src/sys/kern/vfs_lookup.c:1.138 --- src/sys/kern/vfs_lookup.c:1.137 Mon Apr 11 01:36:59 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:37:14 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.137 2011/04/11 01:36:59 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.138 2011/04/11 01:37:14 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.137 2011/04/11 01:36:59 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.138 2011/04/11 01:37:14 dholland Exp $); #include opt_magiclinks.h @@ -415,6 +415,7 @@ int slashes; unsigned attempt_retry:1; /* true if error allows emul retry */ + unsigned lookup_terminal:1; /* flag returned from lookup */ }; @@ -1093,145 +1094,6 @@ return 0; } -static int -do_lookup(struct namei_state *state, struct vnode *startdir) -{ - int error = 0; - - struct componentname *cnp = state-cnp; - struct nameidata *ndp = state-ndp; - - KASSERT(cnp == ndp-ni_cnd); - - cnp-cn_nameptr = ndp-ni_pnbuf; - - error = lookup_start(state, startdir); - if (error) { - goto bad; - } - // XXX: this case should not be necessary given proper handling - // of slashes elsewhere. - if (state-lookup_alldone) { - goto terminal; - } - -dirloop: - error = lookup_parsepath(state); - if (error) { - goto bad; - } - - error = lookup_once(state); - if (error) { - goto bad; - } - // XXX ought to be able to avoid this case too - if (state-lookup_alldone) { - /* this should NOT be goto terminal; */ - return 0; - } - - /* - * Check for symbolic link. Back up over any slashes that we skipped, - * as we will need them again. - */ - if ((state-dp-v_type == VLNK) (cnp-cn_flags (FOLLOW|REQUIREDIR))) { - ndp-ni_pathlen += state-slashes; - ndp-ni_next -= state-slashes; - cnp-cn_flags |= ISSYMLINK; - return (0); - } - - /* - * Check for directory, if the component was followed by a series of - * slashes. - */ - if ((state-dp-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { - error = ENOTDIR; - KASSERT(state-dp != ndp-ni_dvp); - vput(state-dp); - goto bad; - } - - /* - * Not a symbolic link. If this was not the last component, then - * continue at the next component, else return. - */ - if (!(cnp-cn_flags ISLASTCN)) { - cnp-cn_nameptr = ndp-ni_next; - if (ndp-ni_dvp == state-dp) { - vrele(ndp-ni_dvp); - } else { - vput(ndp-ni_dvp); - } - goto dirloop; - } - -terminal: - if (state-dp == ndp-ni_erootdir) { - /* - * We are about to return the emulation root. - * This isn't a good idea because code might repeatedly - * lookup .. until the file matches that returned - * for / and loop forever. - * So convert it to the real root. - */ - if (ndp-ni_dvp == state-dp) - vrele(state-dp); - else - if (ndp-ni_dvp != NULL) -vput(ndp-ni_dvp); - ndp-ni_dvp = NULL; - vput(state-dp); - state-dp = ndp-ni_rootdir; - vref(state-dp); - vn_lock(state-dp, LK_EXCLUSIVE | LK_RETRY); - ndp-ni_vp = state-dp; - } - - /* - * If the caller requested the parent node (i.e. - * it's a CREATE, DELETE, or RENAME), and we don't have one - * (because this is the root directory), then we must fail. - */ - if (ndp-ni_dvp == NULL cnp-cn_nameiop != LOOKUP) { - switch (cnp-cn_nameiop) { - case CREATE: - error = EEXIST; - break; - case DELETE: - case RENAME: - error = EBUSY; - break; - default: - KASSERT(0); - } - vput(state-dp); - goto bad; - } - - /* - * Disallow directory write attempts on read-only lookups. - * Prefers EEXIST over EROFS for the CREATE case. - */ - if (state-rdonly - (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { - error = EROFS; - if (state-dp != ndp-ni_dvp) { - vput(state-dp); - } - goto bad; - } - if ((cnp-cn_flags LOCKLEAF) == 0) { - VOP_UNLOCK(state-dp); - } - return (0); - -bad: - ndp-ni_vp = NULL; - return (error); -} - // static int @@ -1265,7 +1127,91 @@ * Look up the next path component. * (currently, this may consume more than one) */ - error = do_lookup(state, state-namei_startdir); + cnp-cn_nameptr = ndp-ni_pnbuf; + + error = lookup_start(state, state-namei_startdir); + if (error) { + ndp-ni_vp = NULL; + return (error); + } + + // XXX: this case should not be necessary given proper handling + // of slashes elsewhere. + if (state-lookup_alldone) { + state-lookup_terminal = 1; + error = 0; + } else { + + dirloop: + error = lookup_parsepath(state); + if (error) { +
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:37:43 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.138 -r1.139 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.138 src/sys/kern/vfs_lookup.c:1.139 --- src/sys/kern/vfs_lookup.c:1.138 Mon Apr 11 01:37:14 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:37:43 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.138 2011/04/11 01:37:14 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.139 2011/04/11 01:37:43 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.138 2011/04/11 01:37:14 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.139 2011/04/11 01:37:43 dholland Exp $); #include opt_magiclinks.h @@ -415,7 +415,6 @@ int slashes; unsigned attempt_retry:1; /* true if error allows emul retry */ - unsigned lookup_terminal:1; /* flag returned from lookup */ }; @@ -641,7 +640,8 @@ static inline int namei_atsymlink(struct namei_state *state) { - return (state-cnp-cn_flags ISSYMLINK) != 0; + return (state-dp-v_type == VLNK) + (state-cnp-cn_flags (FOLLOW|REQUIREDIR)); } /* @@ -775,67 +775,6 @@ * if LOCKPARENT set, return locked parent in ni_dvp */ -/* - * Begin lookup(). - */ -static int -lookup_start(struct namei_state *state, struct vnode *startdir) -{ - const char *cp; /* pointer into pathname argument */ - - struct componentname *cnp = state-cnp; - struct nameidata *ndp = state-ndp; - - KASSERT(cnp == ndp-ni_cnd); - - state-lookup_alldone = 0; - state-dp = NULL; - - /* - * Setup: break out flag bits into variables. - */ - state-docache = (cnp-cn_flags NOCACHE) ^ NOCACHE; - if (cnp-cn_nameiop == DELETE) - state-docache = 0; - state-rdonly = cnp-cn_flags RDONLY; - ndp-ni_dvp = NULL; - cnp-cn_flags = ~ISSYMLINK; - state-dp = startdir; - - /* - * If we have a leading string of slashes, remove them, and just make - * sure the current node is a directory. - */ - cp = cnp-cn_nameptr; - if (*cp == '/') { - do { - cp++; - } while (*cp == '/'); - ndp-ni_pathlen -= cp - cnp-cn_nameptr; - cnp-cn_nameptr = cp; - - if (state-dp-v_type != VDIR) { - vput(state-dp); - return ENOTDIR; - } - - /* - * If we've exhausted the path name, then just return the - * current node. - */ - if (cnp-cn_nameptr[0] == '\0') { - ndp-ni_vp = state-dp; - cnp-cn_flags |= ISLASTCN; - - /* bleh */ - state-lookup_alldone = 1; - return 0; - } - } - - return 0; -} - static int lookup_parsepath(struct namei_state *state) { @@ -1102,6 +1041,7 @@ { struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; + const char *cp; int error; error = namei_start(state, forcecwd); @@ -1110,8 +1050,17 @@ } /* + * Setup: break out flag bits into variables. + */ + state-docache = (cnp-cn_flags NOCACHE) ^ NOCACHE; + if (cnp-cn_nameiop == DELETE) + state-docache = 0; + state-rdonly = cnp-cn_flags RDONLY; + + /* * Keep going until we run out of path components. */ + cnp-cn_nameptr = ndp-ni_pnbuf; for (;;) { /* @@ -1127,190 +1076,98 @@ * Look up the next path component. * (currently, this may consume more than one) */ - cnp-cn_nameptr = ndp-ni_pnbuf; - - error = lookup_start(state, state-namei_startdir); - if (error) { - ndp-ni_vp = NULL; - return (error); - } - // XXX: this case should not be necessary given proper handling - // of slashes elsewhere. - if (state-lookup_alldone) { - state-lookup_terminal = 1; - error = 0; - } else { - - dirloop: - error = lookup_parsepath(state); - if (error) { -state-lookup_terminal = 0; -ndp-ni_vp = NULL; -goto lookup_out; - } + state-lookup_alldone = 0; - error = lookup_once(state); - if (error) { -state-lookup_terminal = 0; -ndp-ni_vp = NULL; -goto lookup_out; - } - // XXX ought to be able to avoid this case too - if (state-lookup_alldone) { -/* this should NOT set lookup_terminal */ -state-lookup_terminal = 0; -error = 0; -goto lookup_out; - } + ndp-ni_dvp = NULL; + cnp-cn_flags = ~ISSYMLINK; + state-dp = state-namei_startdir; - /* - * Check for symbolic link. Back up over any - * slashes that we skipped, as we will need - * them again. - */ - if ((state-dp-v_type == VLNK) (cnp-cn_flags (FOLLOW|REQUIREDIR))) { -ndp-ni_pathlen += state-slashes; -ndp-ni_next -= state-slashes; -cnp-cn_flags |= ISSYMLINK; -state-lookup_terminal = 0; -error = 0; -goto lookup_out; - } +dirloop: + /* + * If we have a leading string of slashes, remove + * them, and just make sure the current node is a + * directory. + */ + cp =
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:38:10 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.139 -r1.140 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.139 src/sys/kern/vfs_lookup.c:1.140 --- src/sys/kern/vfs_lookup.c:1.139 Mon Apr 11 01:37:43 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:38:10 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.139 2011/04/11 01:37:43 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.140 2011/04/11 01:38:10 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.139 2011/04/11 01:37:43 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.140 2011/04/11 01:38:10 dholland Exp $); #include opt_magiclinks.h @@ -593,9 +593,11 @@ * appropriate. */ static int -namei_start(struct namei_state *state, struct vnode *forcecwd) +namei_start(struct namei_state *state, struct vnode *forcecwd, + struct vnode **startdir_ret) { struct nameidata *ndp = state-ndp; + struct vnode *startdir; /* length includes null terminator (was originally from copyinstr) */ ndp-ni_pathlen = strlen(ndp-ni_pnbuf) + 1; @@ -612,16 +614,16 @@ /* Get starting directory, set up root, and ktrace. */ if (forcecwd != NULL) { - state-namei_startdir = namei_getstartdir_for_nfsd(state, - forcecwd); + startdir = namei_getstartdir_for_nfsd(state, forcecwd); /* no ktrace */ } else { - state-namei_startdir = namei_getstartdir(state); + startdir = namei_getstartdir(state); namei_ktrace(state); } - vn_lock(state-namei_startdir, LK_EXCLUSIVE | LK_RETRY); + vn_lock(startdir, LK_EXCLUSIVE | LK_RETRY); + *startdir_ret = startdir; return 0; } @@ -1044,7 +1046,7 @@ const char *cp; int error; - error = namei_start(state, forcecwd); + error = namei_start(state, forcecwd, state-namei_startdir); if (error) { return error; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:38:24 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.140 -r1.141 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.140 src/sys/kern/vfs_lookup.c:1.141 --- src/sys/kern/vfs_lookup.c:1.140 Mon Apr 11 01:38:10 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:38:24 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.140 2011/04/11 01:38:10 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.141 2011/04/11 01:38:24 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.140 2011/04/11 01:38:10 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.141 2011/04/11 01:38:24 dholland Exp $); #include opt_magiclinks.h @@ -650,7 +650,9 @@ * Follow a symlink. */ static inline int -namei_follow(struct namei_state *state, int inhibitmagic) +namei_follow(struct namei_state *state, int inhibitmagic, + struct vnode *searchdir, + struct vnode **newsearchdir_ret) { struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; @@ -715,26 +717,27 @@ memcpy(ndp-ni_pnbuf, cp, ndp-ni_pathlen); PNBUF_PUT(cp); vput(ndp-ni_vp); - state-namei_startdir = ndp-ni_dvp; + searchdir = ndp-ni_dvp; /* * Check if root directory should replace current directory. */ if (ndp-ni_pnbuf[0] == '/') { - vput(state-namei_startdir); + vput(searchdir); /* Keep absolute symbolic links inside emulation root */ - state-namei_startdir = ndp-ni_erootdir; - if (state-namei_startdir == NULL || + searchdir = ndp-ni_erootdir; + if (searchdir == NULL || (ndp-ni_pnbuf[1] == '.' ndp-ni_pnbuf[2] == '.' ndp-ni_pnbuf[3] == '/')) { ndp-ni_erootdir = NULL; - state-namei_startdir = ndp-ni_rootdir; + searchdir = ndp-ni_rootdir; } - vref(state-namei_startdir); - vn_lock(state-namei_startdir, LK_EXCLUSIVE | LK_RETRY); + vref(searchdir); + vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); } + *newsearchdir_ret = searchdir; return 0; } @@ -1173,7 +1176,9 @@ if (neverfollow) { error = EINVAL; } else { -error = namei_follow(state, inhibitmagic); +error = namei_follow(state, inhibitmagic, + state-namei_startdir, + state-namei_startdir); } if (error) { KASSERT(ndp-ni_dvp != ndp-ni_vp);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:38:47 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.141 -r1.142 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.141 src/sys/kern/vfs_lookup.c:1.142 --- src/sys/kern/vfs_lookup.c:1.141 Mon Apr 11 01:38:24 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:38:47 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.141 2011/04/11 01:38:24 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.142 2011/04/11 01:38:47 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.141 2011/04/11 01:38:24 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.142 2011/04/11 01:38:47 dholland Exp $); #include opt_magiclinks.h @@ -717,7 +717,6 @@ memcpy(ndp-ni_pnbuf, cp, ndp-ni_pathlen); PNBUF_PUT(cp); vput(ndp-ni_vp); - searchdir = ndp-ni_dvp; /* * Check if root directory should replace current directory. @@ -1176,6 +1175,7 @@ if (neverfollow) { error = EINVAL; } else { +state-namei_startdir = ndp-ni_dvp; error = namei_follow(state, inhibitmagic, state-namei_startdir, state-namei_startdir);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:39:29 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.143 -r1.144 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.143 src/sys/kern/vfs_lookup.c:1.144 --- src/sys/kern/vfs_lookup.c:1.143 Mon Apr 11 01:39:13 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:39:28 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.143 2011/04/11 01:39:13 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.144 2011/04/11 01:39:28 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.143 2011/04/11 01:39:13 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.144 2011/04/11 01:39:28 dholland Exp $); #include opt_magiclinks.h @@ -640,9 +640,9 @@ * Check for being at a symlink. */ static inline int -namei_atsymlink(struct namei_state *state) +namei_atsymlink(struct namei_state *state, struct vnode *foundobj) { - return (state-dp-v_type == VLNK) + return (foundobj-v_type == VLNK) (state-cnp-cn_flags (FOLLOW|REQUIREDIR)); } @@ -1168,7 +1168,7 @@ * over any slashes that we skipped, as we will need * them again. */ - if (namei_atsymlink(state)) { + if (namei_atsymlink(state, state-dp)) { ndp-ni_pathlen += state-slashes; ndp-ni_next -= state-slashes; cnp-cn_flags |= ISSYMLINK;
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:39:46 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.144 -r1.145 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.144 src/sys/kern/vfs_lookup.c:1.145 --- src/sys/kern/vfs_lookup.c:1.144 Mon Apr 11 01:39:28 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:39:46 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.144 2011/04/11 01:39:28 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.145 2011/04/11 01:39:46 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.144 2011/04/11 01:39:28 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.145 2011/04/11 01:39:46 dholland Exp $); #include opt_magiclinks.h @@ -1043,6 +1043,7 @@ { struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; + struct vnode *searchdir; const char *cp; int error; @@ -1083,7 +1084,7 @@ ndp-ni_dvp = NULL; cnp-cn_flags = ~ISSYMLINK; - state-dp = state-namei_startdir; + searchdir = state-namei_startdir; dirloop: /* @@ -1099,8 +1100,8 @@ ndp-ni_pathlen -= cp - cnp-cn_nameptr; cnp-cn_nameptr = cp; - if (state-dp-v_type != VDIR) { -vput(state-dp); + if (searchdir-v_type != VDIR) { +vput(searchdir); ndp-ni_vp = NULL; /* XXX this should use namei_end() */ if (ndp-ni_dvp) { @@ -1116,16 +1117,18 @@ * current node. */ if (cnp-cn_nameptr[0] == '\0') { - ndp-ni_vp = state-dp; + ndp-ni_vp = searchdir; cnp-cn_flags |= ISLASTCN; + /* XXX this conflates searchdir/foundobj wrongly */ + /* bleh */ goto terminal; } error = lookup_parsepath(state); if (error) { - vput(state-dp); + vput(searchdir); ndp-ni_dvp = NULL; ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1136,7 +1139,10 @@ return (error); } + state-dp = searchdir; error = lookup_once(state); + /* XXX here and below searchdir is really foundobj */ + searchdir = state-dp; if (error) { ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1168,7 +1174,7 @@ * over any slashes that we skipped, as we will need * them again. */ - if (namei_atsymlink(state, state-dp)) { + if (namei_atsymlink(state, searchdir)) { ndp-ni_pathlen += state-slashes; ndp-ni_next -= state-slashes; cnp-cn_flags |= ISSYMLINK; @@ -1195,9 +1201,9 @@ * Check for directory, if the component was * followed by a series of slashes. */ - if ((state-dp-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { - KASSERT(state-dp != ndp-ni_dvp); - vput(state-dp); + if ((searchdir-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { + KASSERT(searchdir != ndp-ni_dvp); + vput(searchdir); ndp-ni_vp = NULL; /* XXX this should use namei_end() */ if (ndp-ni_dvp) { @@ -1214,18 +1220,20 @@ */ if (!(cnp-cn_flags ISLASTCN)) { cnp-cn_nameptr = ndp-ni_next; - if (ndp-ni_dvp == state-dp) { + if (ndp-ni_dvp == searchdir) { vrele(ndp-ni_dvp); } else { vput(ndp-ni_dvp); } ndp-ni_dvp = NULL; + /* XXX notyet */ + //searchdir = foundobj; goto dirloop; } terminal: error = 0; - if (state-dp == ndp-ni_erootdir) { + if (searchdir == ndp-ni_erootdir) { /* * We are about to return the emulation root. * This isn't a good idea because code might @@ -1233,17 +1241,17 @@ * matches that returned for / and loop * forever. So convert it to the real root. */ - if (ndp-ni_dvp == state-dp) -vrele(state-dp); + if (ndp-ni_dvp == searchdir) +vrele(searchdir); else if (ndp-ni_dvp != NULL) vput(ndp-ni_dvp); ndp-ni_dvp = NULL; - vput(state-dp); - state-dp = ndp-ni_rootdir; - vref(state-dp); - vn_lock(state-dp, LK_EXCLUSIVE | LK_RETRY); - ndp-ni_vp = state-dp; + vput(searchdir); + searchdir = ndp-ni_rootdir; + vref(searchdir); + vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); + ndp-ni_vp = searchdir; } /* @@ -1264,8 +1272,8 @@ default: KASSERT(0); } - vput(state-dp); - ndp-ni_vp = NULL; + vput(searchdir); + searchdir = NULL; /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); @@ -1281,8 +1289,8 @@ if (state-rdonly (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { error = EROFS; - if (state-dp != ndp-ni_dvp) { -vput(state-dp); + if (searchdir != ndp-ni_dvp) { +vput(searchdir); } ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1293,7 +1301,7 @@ return (error); } if ((cnp-cn_flags LOCKLEAF) == 0) { - VOP_UNLOCK(state-dp); +
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:40:01 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.145 -r1.146 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.145 src/sys/kern/vfs_lookup.c:1.146 --- src/sys/kern/vfs_lookup.c:1.145 Mon Apr 11 01:39:46 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:40:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.145 2011/04/11 01:39:46 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.146 2011/04/11 01:40:01 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.145 2011/04/11 01:39:46 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.146 2011/04/11 01:40:01 dholland Exp $); #include opt_magiclinks.h @@ -1043,7 +1043,7 @@ { struct nameidata *ndp = state-ndp; struct componentname *cnp = state-cnp; - struct vnode *searchdir; + struct vnode *searchdir, *foundobj; const char *cp; int error; @@ -1117,11 +1117,10 @@ * current node. */ if (cnp-cn_nameptr[0] == '\0') { - ndp-ni_vp = searchdir; + foundobj = searchdir; + ndp-ni_vp = foundobj; cnp-cn_flags |= ISLASTCN; - /* XXX this conflates searchdir/foundobj wrongly */ - /* bleh */ goto terminal; } @@ -1141,8 +1140,7 @@ state-dp = searchdir; error = lookup_once(state); - /* XXX here and below searchdir is really foundobj */ - searchdir = state-dp; + foundobj = state-dp; if (error) { ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1174,7 +1172,7 @@ * over any slashes that we skipped, as we will need * them again. */ - if (namei_atsymlink(state, searchdir)) { + if (namei_atsymlink(state, foundobj)) { ndp-ni_pathlen += state-slashes; ndp-ni_next -= state-slashes; cnp-cn_flags |= ISSYMLINK; @@ -1201,9 +1199,9 @@ * Check for directory, if the component was * followed by a series of slashes. */ - if ((searchdir-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { - KASSERT(searchdir != ndp-ni_dvp); - vput(searchdir); + if ((foundobj-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { + KASSERT(foundobj != ndp-ni_dvp); + vput(foundobj); ndp-ni_vp = NULL; /* XXX this should use namei_end() */ if (ndp-ni_dvp) { @@ -1220,20 +1218,19 @@ */ if (!(cnp-cn_flags ISLASTCN)) { cnp-cn_nameptr = ndp-ni_next; - if (ndp-ni_dvp == searchdir) { + if (ndp-ni_dvp == foundobj) { vrele(ndp-ni_dvp); } else { vput(ndp-ni_dvp); } ndp-ni_dvp = NULL; - /* XXX notyet */ - //searchdir = foundobj; + searchdir = foundobj; goto dirloop; } terminal: error = 0; - if (searchdir == ndp-ni_erootdir) { + if (foundobj == ndp-ni_erootdir) { /* * We are about to return the emulation root. * This isn't a good idea because code might @@ -1241,17 +1238,17 @@ * matches that returned for / and loop * forever. So convert it to the real root. */ - if (ndp-ni_dvp == searchdir) -vrele(searchdir); + if (ndp-ni_dvp == foundobj) +vrele(foundobj); else if (ndp-ni_dvp != NULL) vput(ndp-ni_dvp); ndp-ni_dvp = NULL; - vput(searchdir); - searchdir = ndp-ni_rootdir; - vref(searchdir); - vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); - ndp-ni_vp = searchdir; + vput(foundobj); + foundobj = ndp-ni_rootdir; + vref(foundobj); + vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); + ndp-ni_vp = foundobj; } /* @@ -1272,8 +1269,8 @@ default: KASSERT(0); } - vput(searchdir); - searchdir = NULL; + vput(foundobj); + foundobj = NULL; /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); @@ -1289,8 +1286,8 @@ if (state-rdonly (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { error = EROFS; - if (searchdir != ndp-ni_dvp) { -vput(searchdir); + if (foundobj != ndp-ni_dvp) { +vput(foundobj); } ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1301,7 +1298,7 @@ return (error); } if ((cnp-cn_flags LOCKLEAF) == 0) { - VOP_UNLOCK(searchdir); + VOP_UNLOCK(foundobj); } break;
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 01:40:14 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: ZZmsg To generate a diff of this commit: cvs rdiff -u -r1.146 -r1.147 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.146 src/sys/kern/vfs_lookup.c:1.147 --- src/sys/kern/vfs_lookup.c:1.146 Mon Apr 11 01:40:01 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 01:40:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.146 2011/04/11 01:40:01 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.147 2011/04/11 01:40:13 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.146 2011/04/11 01:40:01 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.147 2011/04/11 01:40:13 dholland Exp $); #include opt_magiclinks.h @@ -411,7 +411,6 @@ int docache; /* == 0 do not cache last component */ int rdonly; /* lookup read-only flag bit */ - struct vnode *dp; /* the directory we are searching */ int slashes; unsigned attempt_retry:1; /* true if error allows emul retry */ @@ -434,7 +433,6 @@ state-docache = 0; state-rdonly = 0; - state-dp = NULL; state-slashes = 0; #ifdef DIAGNOSTIC @@ -798,7 +796,8 @@ * the name set the SAVENAME flag. When done, they assume * responsibility for freeing the pathname buffer. * - * At this point, our only vnode state is that dp is held and locked. + * At this point, our only vnode state is that the search dir + * is held and locked. */ cnp-cn_consume = 0; cp = NULL; @@ -856,8 +855,11 @@ } static int -lookup_once(struct namei_state *state) +lookup_once(struct namei_state *state, + struct vnode *searchdir, + struct vnode **foundobj_ret) { + struct vnode *foundobj; struct vnode *tdp; /* saved dp */ struct mount *mp; /* mount table entry */ struct lwp *l = curlwp; @@ -886,18 +888,20 @@ struct proc *p = l-l_proc; for (;;) { - if (state-dp == ndp-ni_rootdir || state-dp == rootvnode) { -ndp-ni_dvp = state-dp; -ndp-ni_vp = state-dp; -vref(state-dp); + if (searchdir == ndp-ni_rootdir || searchdir == rootvnode) { +foundobj = searchdir; +vref(foundobj); +ndp-ni_dvp = searchdir; +ndp-ni_vp = foundobj; +*foundobj_ret = foundobj; return 0; } if (ndp-ni_rootdir != rootvnode) { int retval; -VOP_UNLOCK(state-dp); -retval = vn_isunder(state-dp, ndp-ni_rootdir, l); -vn_lock(state-dp, LK_EXCLUSIVE | LK_RETRY); +VOP_UNLOCK(searchdir); +retval = vn_isunder(searchdir, ndp-ni_rootdir, l); +vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); if (!retval) { /* Oops! We got out of jail! */ log(LOG_WARNING, @@ -906,35 +910,37 @@ p-p_pid, kauth_cred_geteuid(l-l_cred), p-p_comm); /* Put us at the jail root. */ -vput(state-dp); -state-dp = ndp-ni_rootdir; -ndp-ni_dvp = state-dp; -ndp-ni_vp = state-dp; -vref(state-dp); -vref(state-dp); -vn_lock(state-dp, LK_EXCLUSIVE | LK_RETRY); +vput(searchdir); +searchdir = NULL; +foundobj = ndp-ni_rootdir; +vref(foundobj); +vref(foundobj); +ndp-ni_dvp = foundobj; +ndp-ni_vp = foundobj; +vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); +*foundobj_ret = foundobj; return 0; } } - if ((state-dp-v_vflag VV_ROOT) == 0 || + if ((searchdir-v_vflag VV_ROOT) == 0 || (cnp-cn_flags NOCROSSMOUNT)) break; - tdp = state-dp; - state-dp = state-dp-v_mount-mnt_vnodecovered; + tdp = searchdir; + searchdir = searchdir-v_mount-mnt_vnodecovered; vput(tdp); - vref(state-dp); - vn_lock(state-dp, LK_EXCLUSIVE | LK_RETRY); + vref(searchdir); + vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); } } /* * We now have a segment name to search for, and a directory to search. - * Again, our only vnode state is that dp is held and locked. + * Our vnode state here is that searchdir is held and locked. */ unionlookup: - ndp-ni_dvp = state-dp; + ndp-ni_dvp = searchdir; ndp-ni_vp = NULL; - error = VOP_LOOKUP(state-dp, ndp-ni_vp, cnp); + error = VOP_LOOKUP(searchdir, ndp-ni_vp, cnp); if (error != 0) { #ifdef DIAGNOSTIC if (ndp-ni_vp != NULL) @@ -944,13 +950,13 @@ printf(not found\n); #endif /* NAMEI_DIAGNOSTIC */ if ((error == ENOENT) - (state-dp-v_vflag VV_ROOT) - (state-dp-v_mount-mnt_flag MNT_UNION)) { - tdp = state-dp; - state-dp = state-dp-v_mount-mnt_vnodecovered; + (searchdir-v_vflag VV_ROOT) + (searchdir-v_mount-mnt_flag MNT_UNION)) { + tdp = searchdir; + searchdir = searchdir-v_mount-mnt_vnodecovered; vput(tdp); - vref(state-dp); -
CVS commit: src/usr.bin/make
Module Name:src Committed By: sjg Date: Mon Apr 11 01:44:15 UTC 2011 Modified Files: src/usr.bin/make: make.1 var.c Log Message: Add :localtime and :gmtime which use value as format string for strftime. To generate a diff of this commit: cvs rdiff -u -r1.186 -r1.187 src/usr.bin/make/make.1 cvs rdiff -u -r1.163 -r1.164 src/usr.bin/make/var.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/usr.bin/make/make.1 diff -u src/usr.bin/make/make.1:1.186 src/usr.bin/make/make.1:1.187 --- src/usr.bin/make/make.1:1.186 Thu Apr 7 01:40:01 2011 +++ src/usr.bin/make/make.1 Mon Apr 11 01:44:15 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: make.1,v 1.186 2011/04/07 01:40:01 joerg Exp $ +.\ $NetBSD: make.1,v 1.187 2011/04/11 01:44:15 sjg Exp $ .\ .\ Copyright (c) 1990, 1993 .\ The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\ .\ from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\ -.Dd April 2, 2011 +.Dd April 10, 2011 .Dt MAKE 1 .Os .Sh NAME @@ -1042,8 +1042,18 @@ .Nm . .It Cm \:R Replaces each word in the variable with everything but its suffix. +.It Cm \:gmtime +The value is a format string for +.Xr strftime 3 , +using the current +.Xr gmtime 3 . .It Cm \:hash Compute a 32bit hash of the value and encode it as hex digits. +.It Cm \:localtime +The value is a format string for +.Xr strftime 3 , +using the current +.Xr localtime 3 . .It Cm \:tA Attempt to convert variable to an absolute path using .Xr realpath 3 , Index: src/usr.bin/make/var.c diff -u src/usr.bin/make/var.c:1.163 src/usr.bin/make/var.c:1.164 --- src/usr.bin/make/var.c:1.163 Thu Apr 7 01:40:01 2011 +++ src/usr.bin/make/var.c Mon Apr 11 01:44:15 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.163 2011/04/07 01:40:01 joerg Exp $ */ +/* $NetBSD: var.c,v 1.164 2011/04/11 01:44:15 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = $NetBSD: var.c,v 1.163 2011/04/07 01:40:01 joerg Exp $; +static char rcsid[] = $NetBSD: var.c,v 1.164 2011/04/11 01:44:15 sjg Exp $; #else #include sys/cdefs.h #ifndef lint #if 0 static char sccsid[] = @(#)var.c 8.3 (Berkeley) 3/19/94; #else -__RCSID($NetBSD: var.c,v 1.163 2011/04/07 01:40:01 joerg Exp $); +__RCSID($NetBSD: var.c,v 1.164 2011/04/11 01:44:15 sjg Exp $); #endif #endif /* not lint */ #endif @@ -2366,6 +2366,21 @@ return Buf_Destroy(buf, FALSE); } +static char * +VarStrftime(const char *fmt, int zulu) +{ +char buf[BUFSIZ]; +time_t utc; + +time(utc); +if (!*fmt) + fmt = %c; +strftime(buf, sizeof(buf), fmt, zulu ? gmtime(utc) : localtime(utc)); + +buf[sizeof(buf) - 1] = '\0'; +return bmake_strdup(buf); +} + /* * Now we need to apply any modifiers the user wants applied. * These are: @@ -2451,6 +2466,10 @@ * variable. */ +/* we now have some modifiers with long names */ +#define STRMOD_MATCH(s, want, n) \ +(strncmp(s, want, n) == 0 (s[n] == endc || s[n] == ':')) + static char * ApplyModifiers(char *nstr, const char *tstr, int startc, int endc, @@ -2896,10 +2915,19 @@ } } + case 'g': + cp = tstr + 1; /* make sure it is set */ + if (STRMOD_MATCH(tstr, gmtime, 6)) { + newStr = VarStrftime(nstr, 1); + cp = tstr + 6; + termc = *cp; + } else { + goto bad_modifier; + } + break; case 'h': cp = tstr + 1; /* make sure it is set */ - if (strncmp(tstr, hash, 4) == 0 - (tstr[4] == endc || tstr[4] == ':')) { + if (STRMOD_MATCH(tstr, hash, 4)) { newStr = VarHash(nstr); cp = tstr + 4; termc = *cp; @@ -2907,6 +2935,16 @@ goto bad_modifier; } break; + case 'l': + cp = tstr + 1; /* make sure it is set */ + if (STRMOD_MATCH(tstr, localtime, 9)) { + newStr = VarStrftime(nstr, 0); + cp = tstr + 9; + termc = *cp; + } else { + goto bad_modifier; + } + break; case 't': { cp = tstr + 1; /* make sure it is set */
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:11:32 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: In lookup_once(), move the assignments to ni_dvp and ni_vp to just before function return. To generate a diff of this commit: cvs rdiff -u -r1.147 -r1.148 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.147 src/sys/kern/vfs_lookup.c:1.148 --- src/sys/kern/vfs_lookup.c:1.147 Mon Apr 11 01:40:13 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:11:32 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.147 2011/04/11 01:40:13 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.148 2011/04/11 02:11:32 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.147 2011/04/11 01:40:13 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.148 2011/04/11 02:11:32 dholland Exp $); #include opt_magiclinks.h @@ -938,12 +938,11 @@ * Our vnode state here is that searchdir is held and locked. */ unionlookup: - ndp-ni_dvp = searchdir; - ndp-ni_vp = NULL; - error = VOP_LOOKUP(searchdir, ndp-ni_vp, cnp); + foundobj = NULL; + error = VOP_LOOKUP(searchdir, foundobj, cnp); if (error != 0) { #ifdef DIAGNOSTIC - if (ndp-ni_vp != NULL) + if (foundobj != NULL) panic(leaf `%s' should be empty, cnp-cn_nameptr); #endif /* DIAGNOSTIC */ #ifdef NAMEI_DIAGNOSTIC @@ -981,11 +980,13 @@ } /* - * We return with ni_vp NULL to indicate that the entry + * We return with foundobj NULL to indicate that the entry * doesn't currently exist, leaving a pointer to the * (possibly locked) directory vnode in ndp-ni_dvp. */ state-lookup_alldone = 1; + ndp-ni_dvp = searchdir; + ndp-ni_vp = NULL; *foundobj_ret = NULL; return (0); } @@ -1006,10 +1007,8 @@ cnp-cn_flags |= ISLASTCN; } - foundobj = ndp-ni_vp; - /* - * foundobj and ndp-ni_dvp are both locked and held, + * foundobj and searchdir are both locked and held, * and may be the same vnode. */ @@ -1024,21 +1023,23 @@ vput(foundobj); return error; } - KASSERT(ndp-ni_dvp != foundobj); - VOP_UNLOCK(ndp-ni_dvp); + KASSERT(searchdir != foundobj); + VOP_UNLOCK(searchdir); vput(foundobj); error = VFS_ROOT(mp, tdp); vfs_unbusy(mp, false, NULL); if (error) { - vn_lock(ndp-ni_dvp, LK_EXCLUSIVE | LK_RETRY); + vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); return error; } VOP_UNLOCK(tdp); - ndp-ni_vp = foundobj = tdp; - vn_lock(ndp-ni_dvp, LK_EXCLUSIVE | LK_RETRY); - vn_lock(ndp-ni_vp, LK_EXCLUSIVE | LK_RETRY); + foundobj = tdp; + vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); + vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); } + ndp-ni_dvp = searchdir; + ndp-ni_vp = foundobj; *foundobj_ret = foundobj; return 0; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:12:42 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: lookup_once() on success always sets ni_vp to the same thing as the returned foundobj, so do that in the caller instead. To generate a diff of this commit: cvs rdiff -u -r1.148 -r1.149 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.148 src/sys/kern/vfs_lookup.c:1.149 --- src/sys/kern/vfs_lookup.c:1.148 Mon Apr 11 02:11:32 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:12:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.148 2011/04/11 02:11:32 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.149 2011/04/11 02:12:42 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.148 2011/04/11 02:11:32 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.149 2011/04/11 02:12:42 dholland Exp $); #include opt_magiclinks.h @@ -892,7 +892,6 @@ foundobj = searchdir; vref(foundobj); ndp-ni_dvp = searchdir; -ndp-ni_vp = foundobj; *foundobj_ret = foundobj; return 0; } @@ -916,7 +915,6 @@ vref(foundobj); vref(foundobj); ndp-ni_dvp = foundobj; -ndp-ni_vp = foundobj; vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); *foundobj_ret = foundobj; return 0; @@ -986,7 +984,6 @@ */ state-lookup_alldone = 1; ndp-ni_dvp = searchdir; - ndp-ni_vp = NULL; *foundobj_ret = NULL; return (0); } @@ -1039,7 +1036,6 @@ } ndp-ni_dvp = searchdir; - ndp-ni_vp = foundobj; *foundobj_ret = foundobj; return 0; } @@ -1166,6 +1162,7 @@ state-attempt_retry = 1; return (error); } + ndp-ni_vp = foundobj; // XXX ought to be able to avoid this case too if (state-lookup_alldone) { error = 0; @@ -1459,6 +1456,7 @@ if (error) { goto bad; } + ndp-ni_vp = foundobj; // XXX ought to be able to avoid this case too if (state-lookup_alldone) { /* this should NOT be goto terminal; */
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:12:58 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: As ndp-ni_dvp is also assigned to the updated search dir on every return from lookup_once(), pass it back instead and update ni_dvp in the caller. To generate a diff of this commit: cvs rdiff -u -r1.149 -r1.150 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.149 src/sys/kern/vfs_lookup.c:1.150 --- src/sys/kern/vfs_lookup.c:1.149 Mon Apr 11 02:12:42 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:12:58 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.149 2011/04/11 02:12:42 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.150 2011/04/11 02:12:58 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.149 2011/04/11 02:12:42 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.150 2011/04/11 02:12:58 dholland Exp $); #include opt_magiclinks.h @@ -857,6 +857,7 @@ static int lookup_once(struct namei_state *state, struct vnode *searchdir, + struct vnode **newsearchdir_ret, struct vnode **foundobj_ret) { struct vnode *foundobj; @@ -891,7 +892,7 @@ if (searchdir == ndp-ni_rootdir || searchdir == rootvnode) { foundobj = searchdir; vref(foundobj); -ndp-ni_dvp = searchdir; +*newsearchdir_ret = searchdir; *foundobj_ret = foundobj; return 0; } @@ -914,8 +915,8 @@ foundobj = ndp-ni_rootdir; vref(foundobj); vref(foundobj); -ndp-ni_dvp = foundobj; vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); +*newsearchdir_ret = foundobj; *foundobj_ret = foundobj; return 0; } @@ -980,10 +981,10 @@ /* * We return with foundobj NULL to indicate that the entry * doesn't currently exist, leaving a pointer to the - * (possibly locked) directory vnode in ndp-ni_dvp. + * (possibly locked) directory vnode as searchdir. */ state-lookup_alldone = 1; - ndp-ni_dvp = searchdir; + *newsearchdir_ret = searchdir; *foundobj_ret = NULL; return (0); } @@ -1035,7 +1036,7 @@ vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); } - ndp-ni_dvp = searchdir; + *newsearchdir_ret = searchdir; *foundobj_ret = foundobj; return 0; } @@ -1143,7 +1144,8 @@ return (error); } - error = lookup_once(state, searchdir, foundobj); + error = lookup_once(state, searchdir, searchdir, foundobj); + ndp-ni_dvp = searchdir; if (error) { ndp-ni_vp = NULL; /* XXX this should use namei_end() */ @@ -1452,7 +1454,7 @@ else cnp-cn_flags = ~ISDOTDOT; - error = lookup_once(state, startdir, foundobj); + error = lookup_once(state, startdir, ndp-ni_dvp, foundobj); if (error) { goto bad; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:13:10 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: namei_end() doesn't really do anything useful at this point, so get rid of it. To generate a diff of this commit: cvs rdiff -u -r1.150 -r1.151 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.150 src/sys/kern/vfs_lookup.c:1.151 --- src/sys/kern/vfs_lookup.c:1.150 Mon Apr 11 02:12:58 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:13:10 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.150 2011/04/11 02:12:58 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.150 2011/04/11 02:12:58 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $); #include opt_magiclinks.h @@ -626,15 +626,6 @@ } /* - * Undo namei_start: unlock and release the current lookup directory. - */ -static void -namei_end(struct namei_state *state) -{ - vput(state-namei_startdir); -} - -/* * Check for being at a symlink. */ static inline int @@ -1077,7 +1068,7 @@ * XXX: should this also check if it's unlinked? */ if (state-namei_startdir-v_mount == NULL) { - namei_end(state); + vput(state-namei_startdir); return (ENOENT); } @@ -1109,7 +1100,6 @@ if (searchdir-v_type != VDIR) { vput(searchdir); ndp-ni_vp = NULL; -/* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } @@ -1136,7 +1126,6 @@ vput(searchdir); ndp-ni_dvp = NULL; ndp-ni_vp = NULL; - /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } @@ -1148,7 +1137,6 @@ ndp-ni_dvp = searchdir; if (error) { ndp-ni_vp = NULL; - /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } @@ -1209,7 +1197,6 @@ KASSERT(foundobj != ndp-ni_dvp); vput(foundobj); ndp-ni_vp = NULL; - /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } @@ -1277,7 +1264,6 @@ } vput(foundobj); foundobj = NULL; - /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); } @@ -1296,7 +1282,6 @@ vput(foundobj); } ndp-ni_vp = NULL; - /* XXX this should use namei_end() */ if (ndp-ni_dvp) { vput(ndp-ni_dvp); }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:13:22 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: state-namei_startdir has no further reason to exist. To generate a diff of this commit: cvs rdiff -u -r1.151 -r1.152 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.151 src/sys/kern/vfs_lookup.c:1.152 --- src/sys/kern/vfs_lookup.c:1.151 Mon Apr 11 02:13:10 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:13:22 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.151 2011/04/11 02:13:10 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $); #include opt_magiclinks.h @@ -403,9 +403,6 @@ struct nameidata *ndp; struct componentname *cnp; - /* used by the pieces of namei */ - struct vnode *namei_startdir; /* The directory namei() starts from. */ - /* used by the pieces of lookup */ int lookup_alldone; @@ -427,8 +424,6 @@ state-cnp = ndp-ni_cnd; KASSERT((state-cnp-cn_flags INRELOOKUP) == 0); - state-namei_startdir = NULL; - state-lookup_alldone = 0; state-docache = 0; @@ -460,8 +455,6 @@ { KASSERT(state-cnp == state-ndp-ni_cnd); - //KASSERT(state-namei_startdir == NULL); // not yet - /* nothing for now */ (void)state; } @@ -1044,7 +1037,7 @@ const char *cp; int error; - error = namei_start(state, forcecwd, state-namei_startdir); + error = namei_start(state, forcecwd, searchdir); if (error) { return error; } @@ -1067,8 +1060,8 @@ * If the directory we're on is unmounted, bail out. * XXX: should this also check if it's unlinked? */ - if (state-namei_startdir-v_mount == NULL) { - vput(state-namei_startdir); + if (searchdir-v_mount == NULL) { + vput(searchdir); return (ENOENT); } @@ -1081,7 +1074,6 @@ ndp-ni_dvp = NULL; cnp-cn_flags = ~ISSYMLINK; - searchdir = state-namei_startdir; dirloop: /* @@ -1173,10 +1165,16 @@ if (neverfollow) { error = EINVAL; } else { -state-namei_startdir = ndp-ni_dvp; +/* + * dholland 20110410: if we're at a + * union mount it might make sense to + * use the top of the union stack here + * rather than the layer we found the + * symlink in. (FUTURE) + */ error = namei_follow(state, inhibitmagic, - state-namei_startdir, - state-namei_startdir); + searchdir, + searchdir); } if (error) { KASSERT(ndp-ni_dvp != ndp-ni_vp);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:14:57 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: vref new vnodes before vrele'ing old vnodes, just in case. To generate a diff of this commit: cvs rdiff -u -r1.152 -r1.153 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.152 src/sys/kern/vfs_lookup.c:1.153 --- src/sys/kern/vfs_lookup.c:1.152 Mon Apr 11 02:13:22 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:14:57 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.153 2011/04/11 02:14:57 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.152 2011/04/11 02:13:22 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.153 2011/04/11 02:14:57 dholland Exp $); #include opt_magiclinks.h @@ -910,8 +910,8 @@ break; tdp = searchdir; searchdir = searchdir-v_mount-mnt_vnodecovered; - vput(tdp); vref(searchdir); + vput(tdp); vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); } } @@ -936,8 +936,8 @@ (searchdir-v_mount-mnt_flag MNT_UNION)) { tdp = searchdir; searchdir = searchdir-v_mount-mnt_vnodecovered; - vput(tdp); vref(searchdir); + vput(tdp); vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); goto unionlookup; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:15:09 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: In lookup_once(), assign newsearchdir_ret when searchdir is updated, instead of upon return. To generate a diff of this commit: cvs rdiff -u -r1.153 -r1.154 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.153 src/sys/kern/vfs_lookup.c:1.154 --- src/sys/kern/vfs_lookup.c:1.153 Mon Apr 11 02:14:57 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:15:09 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.153 2011/04/11 02:14:57 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.154 2011/04/11 02:15:09 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.153 2011/04/11 02:14:57 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.154 2011/04/11 02:15:09 dholland Exp $); #include opt_magiclinks.h @@ -854,6 +854,7 @@ struct nameidata *ndp = state-ndp; KASSERT(cnp == ndp-ni_cnd); + *newsearchdir_ret = searchdir; /* * Handle ..: two special cases. @@ -873,10 +874,10 @@ struct proc *p = l-l_proc; for (;;) { - if (searchdir == ndp-ni_rootdir || searchdir == rootvnode) { + if (searchdir == ndp-ni_rootdir || + searchdir == rootvnode) { foundobj = searchdir; vref(foundobj); -*newsearchdir_ret = searchdir; *foundobj_ret = foundobj; return 0; } @@ -913,6 +914,7 @@ vref(searchdir); vput(tdp); vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); + *newsearchdir_ret = searchdir; } } @@ -923,6 +925,7 @@ unionlookup: foundobj = NULL; error = VOP_LOOKUP(searchdir, foundobj, cnp); + if (error != 0) { #ifdef DIAGNOSTIC if (foundobj != NULL) @@ -939,6 +942,7 @@ vref(searchdir); vput(tdp); vn_lock(searchdir, LK_EXCLUSIVE | LK_RETRY); + *newsearchdir_ret = searchdir; goto unionlookup; } @@ -968,7 +972,6 @@ * (possibly locked) directory vnode as searchdir. */ state-lookup_alldone = 1; - *newsearchdir_ret = searchdir; *foundobj_ret = NULL; return (0); } @@ -1020,7 +1023,6 @@ vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); } - *newsearchdir_ret = searchdir; *foundobj_ret = foundobj; return 0; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:15:22 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Don't bother conditionally doing vput(ndp-ni_dvp) where it's always null. (and don't bother testing for null where it never is) To generate a diff of this commit: cvs rdiff -u -r1.154 -r1.155 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.154 src/sys/kern/vfs_lookup.c:1.155 --- src/sys/kern/vfs_lookup.c:1.154 Mon Apr 11 02:15:09 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:15:21 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.154 2011/04/11 02:15:09 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.155 2011/04/11 02:15:21 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.154 2011/04/11 02:15:09 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.155 2011/04/11 02:15:21 dholland Exp $); #include opt_magiclinks.h @@ -1094,9 +1094,7 @@ if (searchdir-v_type != VDIR) { vput(searchdir); ndp-ni_vp = NULL; -if (ndp-ni_dvp) { - vput(ndp-ni_dvp); -} +KASSERT(ndp-ni_dvp == NULL); state-attempt_retry = 1; return ENOTDIR; } @@ -1120,9 +1118,6 @@ vput(searchdir); ndp-ni_dvp = NULL; ndp-ni_vp = NULL; - if (ndp-ni_dvp) { -vput(ndp-ni_dvp); - } state-attempt_retry = 1; return (error); } @@ -1131,9 +1126,7 @@ ndp-ni_dvp = searchdir; if (error) { ndp-ni_vp = NULL; - if (ndp-ni_dvp) { -vput(ndp-ni_dvp); - } + vput(ndp-ni_dvp); /* * Note that if we're doing TRYEMULROOT we can * retry with the normal root. Where this is
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:15:38 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Improve previous by manipulating ni_dvp more intelligently. To generate a diff of this commit: cvs rdiff -u -r1.155 -r1.156 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.155 src/sys/kern/vfs_lookup.c:1.156 --- src/sys/kern/vfs_lookup.c:1.155 Mon Apr 11 02:15:21 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:15:38 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.155 2011/04/11 02:15:21 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.156 2011/04/11 02:15:38 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.155 2011/04/11 02:15:21 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.156 2011/04/11 02:15:38 dholland Exp $); #include opt_magiclinks.h @@ -1078,6 +1078,8 @@ cnp-cn_flags = ~ISSYMLINK; dirloop: + KASSERT(ndp-ni_dvp == NULL); + /* * If we have a leading string of slashes, remove * them, and just make sure the current node is a @@ -1093,8 +1095,8 @@ if (searchdir-v_type != VDIR) { vput(searchdir); -ndp-ni_vp = NULL; KASSERT(ndp-ni_dvp == NULL); +ndp-ni_vp = NULL; state-attempt_retry = 1; return ENOTDIR; } @@ -1116,17 +1118,17 @@ error = lookup_parsepath(state); if (error) { vput(searchdir); - ndp-ni_dvp = NULL; + KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = NULL; state-attempt_retry = 1; return (error); } error = lookup_once(state, searchdir, searchdir, foundobj); - ndp-ni_dvp = searchdir; if (error) { + vput(searchdir); + KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = NULL; - vput(ndp-ni_dvp); /* * Note that if we're doing TRYEMULROOT we can * retry with the normal root. Where this is @@ -1139,6 +1141,7 @@ state-attempt_retry = 1; return (error); } + ndp-ni_dvp = searchdir; ndp-ni_vp = foundobj; // XXX ought to be able to avoid this case too if (state-lookup_alldone) {
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:15:55 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Don't assign ni_dvp until the end of namei_oneroot(). To generate a diff of this commit: cvs rdiff -u -r1.156 -r1.157 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.156 src/sys/kern/vfs_lookup.c:1.157 --- src/sys/kern/vfs_lookup.c:1.156 Mon Apr 11 02:15:38 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:15:54 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.156 2011/04/11 02:15:38 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.157 2011/04/11 02:15:54 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.156 2011/04/11 02:15:38 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.157 2011/04/11 02:15:54 dholland Exp $); #include opt_magiclinks.h @@ -1107,6 +1107,7 @@ * current node. */ if (cnp-cn_nameptr[0] == '\0') { + vref(searchdir); foundobj = searchdir; ndp-ni_vp = foundobj; cnp-cn_flags |= ISLASTCN; @@ -1141,8 +1142,9 @@ state-attempt_retry = 1; return (error); } - ndp-ni_dvp = searchdir; + KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = foundobj; + // XXX ought to be able to avoid this case too if (state-lookup_alldone) { error = 0; @@ -1175,9 +1177,10 @@ searchdir); } if (error) { -KASSERT(ndp-ni_dvp != ndp-ni_vp); -vput(ndp-ni_dvp); +KASSERT(searchdir != ndp-ni_vp); +vput(searchdir); vput(ndp-ni_vp); +KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = NULL; return error; } @@ -1190,11 +1193,11 @@ * followed by a series of slashes. */ if ((foundobj-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { - KASSERT(foundobj != ndp-ni_dvp); + KASSERT(foundobj != searchdir); vput(foundobj); ndp-ni_vp = NULL; - if (ndp-ni_dvp) { -vput(ndp-ni_dvp); + if (searchdir) { +vput(searchdir); } state-attempt_retry = 1; return ENOTDIR; @@ -1207,13 +1210,14 @@ */ if (!(cnp-cn_flags ISLASTCN)) { cnp-cn_nameptr = ndp-ni_next; - if (ndp-ni_dvp == foundobj) { -vrele(ndp-ni_dvp); + if (searchdir == foundobj) { +vrele(searchdir); } else { -vput(ndp-ni_dvp); +vput(searchdir); } - ndp-ni_dvp = NULL; + KASSERT(ndp-ni_dvp == NULL); searchdir = foundobj; + foundobj = NULL; goto dirloop; } @@ -1227,12 +1231,13 @@ * matches that returned for / and loop * forever. So convert it to the real root. */ - if (ndp-ni_dvp == foundobj) + if (searchdir == foundobj) vrele(foundobj); else -if (ndp-ni_dvp != NULL) - vput(ndp-ni_dvp); - ndp-ni_dvp = NULL; +if (searchdir != NULL) + vput(searchdir); + searchdir = NULL; + KASSERT(ndp-ni_dvp == NULL); vput(foundobj); foundobj = ndp-ni_rootdir; vref(foundobj); @@ -1246,7 +1251,7 @@ * and we don't have one (because this is the * root directory), then we must fail. */ - if (ndp-ni_dvp == NULL cnp-cn_nameiop != LOOKUP) { + if (searchdir == NULL cnp-cn_nameiop != LOOKUP) { switch (cnp-cn_nameiop) { case CREATE: error = EEXIST; @@ -1260,9 +1265,8 @@ } vput(foundobj); foundobj = NULL; - if (ndp-ni_dvp) { -vput(ndp-ni_dvp); - } + KASSERT(ndp-ni_dvp == NULL); + ndp-ni_vp = NULL; state-attempt_retry = 1; return (error); } @@ -1274,13 +1278,14 @@ if (state-rdonly (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { error = EROFS; - if (foundobj != ndp-ni_dvp) { + if (foundobj != searchdir) { vput(foundobj); } - ndp-ni_vp = NULL; - if (ndp-ni_dvp) { -vput(ndp-ni_dvp); + if (searchdir) { +vput(searchdir); } + KASSERT(ndp-ni_dvp == NULL); + ndp-ni_vp = NULL; state-attempt_retry = 1; return (error); } @@ -1298,15 +1303,16 @@ /* * If LOCKPARENT is not set, the parent directory isn't returned. */ - if ((cnp-cn_flags LOCKPARENT) == 0 ndp-ni_dvp != NULL) { - if (ndp-ni_dvp == ndp-ni_vp) { - vrele(ndp-ni_dvp); + if ((cnp-cn_flags LOCKPARENT) == 0 searchdir != NULL) { + if (searchdir == ndp-ni_vp) { + vrele(searchdir); } else { - vput(ndp-ni_dvp); + vput(searchdir); } - ndp-ni_dvp = NULL; + searchdir = NULL; } + ndp-ni_dvp = searchdir; return 0; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:16:07 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: In the test where we check if searchdir is NULL and fail if we needed to return ni_dvp, also check if searchdir is on a different volume from foundobj. I believe the NULL test was meant to encompass this situation, but it definitely doesn't in some cases related to emulroots. This appears to be a bug, and I'm pretty sure it's not one I introduced. (The search directory and result are on different volumes if we crossed a mount point.) To generate a diff of this commit: cvs rdiff -u -r1.157 -r1.158 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.157 src/sys/kern/vfs_lookup.c:1.158 --- src/sys/kern/vfs_lookup.c:1.157 Mon Apr 11 02:15:54 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:16:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.157 2011/04/11 02:15:54 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.158 2011/04/11 02:16:07 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.157 2011/04/11 02:15:54 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.158 2011/04/11 02:16:07 dholland Exp $); #include opt_magiclinks.h @@ -1246,12 +1246,14 @@ } /* - * If the caller requested the parent node - * (i.e. it's a CREATE, DELETE, or RENAME), - * and we don't have one (because this is the - * root directory), then we must fail. + * If the caller requested the parent node (i.e. it's + * a CREATE, DELETE, or RENAME), and we don't have one + * (because this is the root directory, or we crossed + * a mount point), then we must fail. */ - if (searchdir == NULL cnp-cn_nameiop != LOOKUP) { + if (cnp-cn_nameiop != LOOKUP + (searchdir == NULL || + searchdir-v_mount != foundobj-v_mount)) { switch (cnp-cn_nameiop) { case CREATE: error = EEXIST; @@ -1263,6 +1265,9 @@ default: KASSERT(0); } + if (searchdir) { +vput(searchdir); + } vput(foundobj); foundobj = NULL; KASSERT(ndp-ni_dvp == NULL);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:16:27 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Ensure we don't leak stale pointers out in ni_dvp or ni_vp on error return. To generate a diff of this commit: cvs rdiff -u -r1.158 -r1.159 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.158 src/sys/kern/vfs_lookup.c:1.159 --- src/sys/kern/vfs_lookup.c:1.158 Mon Apr 11 02:16:07 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:16:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.158 2011/04/11 02:16:07 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.159 2011/04/11 02:16:27 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.158 2011/04/11 02:16:07 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.159 2011/04/11 02:16:27 dholland Exp $); #include opt_magiclinks.h @@ -1377,6 +1377,12 @@ 0/*!neverfollow*/, 0/*!inhibitmagic*/); namei_cleanup(state); + if (error) { + /* make sure no stray refs leak out */ + ndp-ni_dvp = NULL; + ndp-ni_vp = NULL; + } + return error; } @@ -1407,6 +1413,12 @@ neverfollow, 1/*inhibitmagic*/); namei_cleanup(state); + if (error) { + /* make sure no stray refs leak out */ + ndp-ni_dvp = NULL; + ndp-ni_vp = NULL; + } + return error; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:17:01 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Fix lookup_for_nfsd_index() -- it wasn't locking the directory it was searching. I'm not sure if this is something I introduced or if it's just been wrong for ages; the code path is used only for serving index.html in WebNFS and probably just ought to be removed. To generate a diff of this commit: cvs rdiff -u -r1.159 -r1.160 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.159 src/sys/kern/vfs_lookup.c:1.160 --- src/sys/kern/vfs_lookup.c:1.159 Mon Apr 11 02:16:27 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:17:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.159 2011/04/11 02:16:27 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.160 2011/04/11 02:17:01 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.159 2011/04/11 02:16:27 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.160 2011/04/11 02:17:01 dholland Exp $); #include opt_magiclinks.h @@ -1458,7 +1458,14 @@ else cnp-cn_flags = ~ISDOTDOT; - error = lookup_once(state, startdir, ndp-ni_dvp, foundobj); + /* + * Because lookup_once can change the startdir, we need our + * own reference to it to avoid consuming the caller's. + */ + vref(startdir); + vn_lock(startdir, LK_EXCLUSIVE | LK_RETRY); + error = lookup_once(state, startdir, startdir, foundobj); + vput(startdir); if (error) { goto bad; } @@ -1469,6 +1476,7 @@ return 0; } + KASSERT((cnp-cn_flags LOCKPARENT) == 0); if ((cnp-cn_flags LOCKLEAF) == 0) { VOP_UNLOCK(foundobj); } @@ -1500,8 +1508,6 @@ ndp-ni_pnbuf = NULL; ndp-ni_cnd.cn_nameptr = NULL; - vref(startdir); - namei_init(state, ndp); error = do_lookup_for_nfsd_index(state, startdir); namei_cleanup(state);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:17:14 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Pass foundobj to namei_follow() instead of fishing in the global state. To generate a diff of this commit: cvs rdiff -u -r1.160 -r1.161 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.160 src/sys/kern/vfs_lookup.c:1.161 --- src/sys/kern/vfs_lookup.c:1.160 Mon Apr 11 02:17:01 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:17:14 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.160 2011/04/11 02:17:01 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.161 2011/04/11 02:17:14 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.160 2011/04/11 02:17:01 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.161 2011/04/11 02:17:14 dholland Exp $); #include opt_magiclinks.h @@ -633,7 +633,7 @@ */ static inline int namei_follow(struct namei_state *state, int inhibitmagic, - struct vnode *searchdir, + struct vnode *searchdir, struct vnode *foundobj, struct vnode **newsearchdir_ret) { struct nameidata *ndp = state-ndp; @@ -649,8 +649,8 @@ if (ndp-ni_loopcnt++ = MAXSYMLINKS) { return ELOOP; } - if (ndp-ni_vp-v_mount-mnt_flag MNT_SYMPERM) { - error = VOP_ACCESS(ndp-ni_vp, VEXEC, cnp-cn_cred); + if (foundobj-v_mount-mnt_flag MNT_SYMPERM) { + error = VOP_ACCESS(foundobj, VEXEC, cnp-cn_cred); if (error != 0) return error; } @@ -665,7 +665,7 @@ auio.uio_rw = UIO_READ; auio.uio_resid = MAXPATHLEN; UIO_SETUP_SYSSPACE(auio); - error = VOP_READLINK(ndp-ni_vp, auio, cnp-cn_cred); + error = VOP_READLINK(foundobj, auio, cnp-cn_cred); if (error) { PNBUF_PUT(cp); return error; @@ -698,7 +698,7 @@ ndp-ni_pathlen += linklen; memcpy(ndp-ni_pnbuf, cp, ndp-ni_pathlen); PNBUF_PUT(cp); - vput(ndp-ni_vp); + vput(foundobj); /* * Check if root directory should replace current directory. @@ -1173,7 +1173,7 @@ * symlink in. (FUTURE) */ error = namei_follow(state, inhibitmagic, - searchdir, + searchdir, ndp-ni_vp, searchdir); } if (error) {
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:17:28 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Remove state-lookup_alldone. Don't need it any more; it's set precisely when succeeding with a null result vnode and it now works to just check for that case. (also, when error is already 0 we don't need to assign another 0 to it, even as a precaution.) To generate a diff of this commit: cvs rdiff -u -r1.161 -r1.162 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.161 src/sys/kern/vfs_lookup.c:1.162 --- src/sys/kern/vfs_lookup.c:1.161 Mon Apr 11 02:17:14 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:17:28 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.161 2011/04/11 02:17:14 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.162 2011/04/11 02:17:28 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.161 2011/04/11 02:17:14 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.162 2011/04/11 02:17:28 dholland Exp $); #include opt_magiclinks.h @@ -403,9 +403,6 @@ struct nameidata *ndp; struct componentname *cnp; - /* used by the pieces of lookup */ - int lookup_alldone; - int docache; /* == 0 do not cache last component */ int rdonly; /* lookup read-only flag bit */ int slashes; @@ -424,8 +421,6 @@ state-cnp = ndp-ni_cnd; KASSERT((state-cnp-cn_flags INRELOOKUP) == 0); - state-lookup_alldone = 0; - state-docache = 0; state-rdonly = 0; state-slashes = 0; @@ -971,7 +966,6 @@ * doesn't currently exist, leaving a pointer to the * (possibly locked) directory vnode as searchdir. */ - state-lookup_alldone = 1; *foundobj_ret = NULL; return (0); } @@ -1072,8 +1066,6 @@ * (currently, this may consume more than one) */ - state-lookup_alldone = 0; - ndp-ni_dvp = NULL; cnp-cn_flags = ~ISSYMLINK; @@ -1145,10 +1137,14 @@ KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = foundobj; - // XXX ought to be able to avoid this case too - if (state-lookup_alldone) { - error = 0; - /* break out of main loop */ + if (foundobj == NULL) { + /* + * Success with no object returned means we're + * creating something and it isn't already + * there. Break out of the main loop now so + * the code below doesn't have to test for + * foundobj == NULL. + */ break; } @@ -1435,7 +1431,6 @@ KASSERT(cnp == ndp-ni_cnd); cnp-cn_nameptr = ndp-ni_pnbuf; - state-lookup_alldone = 0; state-docache = 1; state-rdonly = cnp-cn_flags RDONLY; ndp-ni_dvp = NULL; @@ -1470,9 +1465,8 @@ goto bad; } ndp-ni_vp = foundobj; - // XXX ought to be able to avoid this case too - if (state-lookup_alldone) { - /* this should NOT be goto terminal; */ + + if (foundobj == NULL) { return 0; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:18:07 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Don't assign ni_vp until namei_oneroot() returns. To generate a diff of this commit: cvs rdiff -u -r1.164 -r1.165 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.164 src/sys/kern/vfs_lookup.c:1.165 --- src/sys/kern/vfs_lookup.c:1.164 Mon Apr 11 02:17:54 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:18:07 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.164 2011/04/11 02:17:54 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.165 2011/04/11 02:18:07 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.164 2011/04/11 02:17:54 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.165 2011/04/11 02:18:07 dholland Exp $); #include opt_magiclinks.h @@ -1103,7 +1103,6 @@ if (cnp-cn_nameptr[0] == '\0') { vref(searchdir); foundobj = searchdir; - ndp-ni_vp = foundobj; cnp-cn_flags |= ISLASTCN; /* bleh */ @@ -1137,7 +1136,6 @@ return (error); } KASSERT(ndp-ni_dvp == NULL); - ndp-ni_vp = foundobj; if (foundobj == NULL) { /* @@ -1171,13 +1169,13 @@ * symlink in. (FUTURE) */ error = namei_follow(state, inhibitmagic, - searchdir, ndp-ni_vp, + searchdir, foundobj, searchdir); } if (error) { -KASSERT(searchdir != ndp-ni_vp); +KASSERT(searchdir != foundobj); vput(searchdir); -vput(ndp-ni_vp); +vput(foundobj); KASSERT(ndp-ni_dvp == NULL); ndp-ni_vp = NULL; return error; @@ -1240,7 +1238,6 @@ foundobj = ndp-ni_rootdir; vref(foundobj); vn_lock(foundobj, LK_EXCLUSIVE | LK_RETRY); - ndp-ni_vp = foundobj; } /* @@ -1307,7 +1304,7 @@ * If LOCKPARENT is not set, the parent directory isn't returned. */ if ((cnp-cn_flags LOCKPARENT) == 0 searchdir != NULL) { - if (searchdir == ndp-ni_vp) { + if (searchdir == foundobj) { vrele(searchdir); } else { vput(searchdir); @@ -1316,6 +1313,7 @@ } ndp-ni_dvp = searchdir; + ndp-ni_vp = foundobj; return 0; }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:18:20 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Update some comments. To generate a diff of this commit: cvs rdiff -u -r1.165 -r1.166 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.165 src/sys/kern/vfs_lookup.c:1.166 --- src/sys/kern/vfs_lookup.c:1.165 Mon Apr 11 02:18:07 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:18:20 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.165 2011/04/11 02:18:07 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.166 2011/04/11 02:18:20 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.165 2011/04/11 02:18:07 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.166 2011/04/11 02:18:20 dholland Exp $); #include opt_magiclinks.h @@ -574,8 +574,8 @@ } /* - * Start up namei. Copy the path, find the root dir and cwd, establish - * the starting directory for lookup, and lock it. Also calls ktrace when + * Start up namei. Find the root dir and cwd, establish the starting + * directory for lookup, and lock it. Also calls ktrace when * appropriate. */ static int @@ -961,9 +961,10 @@ } /* - * We return with foundobj NULL to indicate that the entry - * doesn't currently exist, leaving a pointer to the - * (possibly locked) directory vnode as searchdir. + * We return success and a NULL foundobj to indicate + * that the entry doesn't currently exist, leaving a + * pointer to the (possibly locked) directory vnode as + * searchdir. */ *foundobj_ret = NULL; return (0);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:19:27 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Assign NULL to ni_dvp immediately before error return, rather than halfway through the logic. To generate a diff of this commit: cvs rdiff -u -r1.167 -r1.168 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.167 src/sys/kern/vfs_lookup.c:1.168 --- src/sys/kern/vfs_lookup.c:1.167 Mon Apr 11 02:19:11 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:19:27 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.167 2011/04/11 02:19:11 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.168 2011/04/11 02:19:27 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.167 2011/04/11 02:19:11 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.168 2011/04/11 02:19:27 dholland Exp $); #include opt_magiclinks.h @@ -1071,12 +1071,9 @@ * (currently, this may consume more than one) */ - ndp-ni_dvp = NULL; cnp-cn_flags = ~ISSYMLINK; dirloop: - KASSERT(ndp-ni_dvp == NULL); - /* * If we have a leading string of slashes, remove * them, and just make sure the current node is a @@ -1092,7 +1089,7 @@ if (searchdir-v_type != VDIR) { vput(searchdir); -KASSERT(ndp-ni_dvp == NULL); +ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1; return ENOTDIR; @@ -1115,7 +1112,7 @@ error = lookup_parsepath(state); if (error) { vput(searchdir); - KASSERT(ndp-ni_dvp == NULL); + ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1; return (error); @@ -1124,7 +1121,7 @@ error = lookup_once(state, searchdir, searchdir, foundobj); if (error) { vput(searchdir); - KASSERT(ndp-ni_dvp == NULL); + ndp-ni_dvp = NULL; ndp-ni_vp = NULL; /* * Note that if we're doing TRYEMULROOT we can @@ -1138,7 +1135,6 @@ state-attempt_retry = 1; return (error); } - KASSERT(ndp-ni_dvp == NULL); if (foundobj == NULL) { /* @@ -1179,7 +1175,7 @@ KASSERT(searchdir != foundobj); vput(searchdir); vput(foundobj); -KASSERT(ndp-ni_dvp == NULL); +ndp-ni_dvp = NULL; ndp-ni_vp = NULL; return error; } @@ -1194,11 +1190,12 @@ */ if ((foundobj-v_type != VDIR) (cnp-cn_flags REQUIREDIR)) { KASSERT(foundobj != searchdir); - vput(foundobj); - ndp-ni_vp = NULL; if (searchdir) { vput(searchdir); } + vput(foundobj); + ndp-ni_dvp = NULL; + ndp-ni_vp = NULL; state-attempt_retry = 1; return ENOTDIR; } @@ -1215,7 +1212,6 @@ } else { vput(searchdir); } - KASSERT(ndp-ni_dvp == NULL); searchdir = foundobj; foundobj = NULL; goto dirloop; @@ -1237,7 +1233,6 @@ if (searchdir != NULL) vput(searchdir); searchdir = NULL; - KASSERT(ndp-ni_dvp == NULL); vput(foundobj); foundobj = ndp-ni_rootdir; vref(foundobj); @@ -1269,7 +1264,7 @@ } vput(foundobj); foundobj = NULL; - KASSERT(ndp-ni_dvp == NULL); + ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1; return (error); @@ -1288,7 +1283,7 @@ if (searchdir) { vput(searchdir); } - KASSERT(ndp-ni_dvp == NULL); + ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1; return (error);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:19:43 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Don't assign inside an if-expression without an explicit comparison. To generate a diff of this commit: cvs rdiff -u -r1.168 -r1.169 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.168 src/sys/kern/vfs_lookup.c:1.169 --- src/sys/kern/vfs_lookup.c:1.168 Mon Apr 11 02:19:27 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:19:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.168 2011/04/11 02:19:27 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.169 2011/04/11 02:19:42 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.168 2011/04/11 02:19:27 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.169 2011/04/11 02:19:42 dholland Exp $); #include opt_magiclinks.h @@ -997,7 +997,8 @@ * Check to see if the vnode has been mounted on; * if so find the root of the mounted file system. */ - while (foundobj-v_type == VDIR (mp = foundobj-v_mountedhere) + while (foundobj-v_type == VDIR + (mp = foundobj-v_mountedhere) != NULL (cnp-cn_flags NOCROSSMOUNT) == 0) { error = vfs_busy(mp, NULL); if (error != 0) {
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:20:00 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Simplify refcount handling/cleanup in three places. To generate a diff of this commit: cvs rdiff -u -r1.169 -r1.170 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.169 src/sys/kern/vfs_lookup.c:1.170 --- src/sys/kern/vfs_lookup.c:1.169 Mon Apr 11 02:19:42 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:20:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.169 2011/04/11 02:19:42 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.170 2011/04/11 02:20:00 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.169 2011/04/11 02:19:42 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.170 2011/04/11 02:20:00 dholland Exp $); #include opt_magiclinks.h @@ -1228,12 +1228,13 @@ * matches that returned for / and loop * forever. So convert it to the real root. */ - if (searchdir == foundobj) -vrele(foundobj); - else -if (searchdir != NULL) + if (searchdir != NULL) { +if (searchdir == foundobj) + vrele(searchdir); +else vput(searchdir); - searchdir = NULL; +searchdir = NULL; + } vput(foundobj); foundobj = ndp-ni_rootdir; vref(foundobj); @@ -1249,6 +1250,15 @@ if (cnp-cn_nameiop != LOOKUP (searchdir == NULL || searchdir-v_mount != foundobj-v_mount)) { + if (searchdir) { +vput(searchdir); + } + vput(foundobj); + foundobj = NULL; + ndp-ni_dvp = NULL; + ndp-ni_vp = NULL; + state-attempt_retry = 1; + switch (cnp-cn_nameiop) { case CREATE: error = EEXIST; @@ -1260,14 +1270,6 @@ default: KASSERT(0); } - if (searchdir) { -vput(searchdir); - } - vput(foundobj); - foundobj = NULL; - ndp-ni_dvp = NULL; - ndp-ni_vp = NULL; - state-attempt_retry = 1; return (error); } @@ -1278,12 +1280,16 @@ if (state-rdonly (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { error = EROFS; - if (foundobj != searchdir) { -vput(foundobj); - } if (searchdir) { -vput(searchdir); +if (foundobj != searchdir) { + vput(searchdir); +} else { + vrele(searchdir); +} +searchdir = NULL; } + vput(foundobj); + foundobj = NULL; ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1;
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:20:15 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Remove dead assignment of error and simplify some uses of it. To generate a diff of this commit: cvs rdiff -u -r1.170 -r1.171 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.170 src/sys/kern/vfs_lookup.c:1.171 --- src/sys/kern/vfs_lookup.c:1.170 Mon Apr 11 02:20:00 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:20:15 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.170 2011/04/11 02:20:00 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.171 2011/04/11 02:20:15 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.170 2011/04/11 02:20:00 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.171 2011/04/11 02:20:15 dholland Exp $); #include opt_magiclinks.h @@ -1219,7 +1219,6 @@ } terminal: - error = 0; if (foundobj == ndp-ni_erootdir) { /* * We are about to return the emulation root. @@ -1261,16 +1260,14 @@ switch (cnp-cn_nameiop) { case CREATE: -error = EEXIST; -break; +return EEXIST; case DELETE: case RENAME: -error = EBUSY; -break; +return EBUSY; default: -KASSERT(0); +break; } - return (error); + panic(Invalid nameiop\n); } /* @@ -1279,7 +1276,6 @@ */ if (state-rdonly (cnp-cn_nameiop == DELETE || cnp-cn_nameiop == RENAME)) { - error = EROFS; if (searchdir) { if (foundobj != searchdir) { vput(searchdir); @@ -1293,7 +1289,7 @@ ndp-ni_dvp = NULL; ndp-ni_vp = NULL; state-attempt_retry = 1; - return (error); + return EROFS; } if ((cnp-cn_flags LOCKLEAF) == 0) { VOP_UNLOCK(foundobj);
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:21:02 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: Add comment warning about case with LOCKPARENT but not LOCKLEAF. bleh. To generate a diff of this commit: cvs rdiff -u -r1.171 -r1.172 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.171 src/sys/kern/vfs_lookup.c:1.172 --- src/sys/kern/vfs_lookup.c:1.171 Mon Apr 11 02:20:15 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:21:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.171 2011/04/11 02:20:15 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.172 2011/04/11 02:21:01 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.171 2011/04/11 02:20:15 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.172 2011/04/11 02:21:01 dholland Exp $); #include opt_magiclinks.h @@ -1292,6 +1292,17 @@ return EROFS; } if ((cnp-cn_flags LOCKLEAF) == 0) { + /* + * Note: if LOCKPARENT but not LOCKLEAF is + * set, and searchdir == foundobj, this code + * necessarily unlocks the parent as well as + * the leaf. That is, just because you specify + * LOCKPARENT doesn't mean you necessarily get + * a locked parent vnode. The code in + * vfs_syscalls.c, and possibly elsewhere, + * that uses this combination knows this, so + * it can't be safely changed. Feh. XXX + */ VOP_UNLOCK(foundobj); }
CVS commit: src/sys/kern
Module Name:src Committed By: dholland Date: Mon Apr 11 02:21:17 UTC 2011 Modified Files: src/sys/kern: vfs_lookup.c Log Message: description: Update comments. To generate a diff of this commit: cvs rdiff -u -r1.172 -r1.173 src/sys/kern/vfs_lookup.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/vfs_lookup.c diff -u src/sys/kern/vfs_lookup.c:1.172 src/sys/kern/vfs_lookup.c:1.173 --- src/sys/kern/vfs_lookup.c:1.172 Mon Apr 11 02:21:01 2011 +++ src/sys/kern/vfs_lookup.c Mon Apr 11 02:21:17 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_lookup.c,v 1.172 2011/04/11 02:21:01 dholland Exp $ */ +/* $NetBSD: vfs_lookup.c,v 1.173 2011/04/11 02:21:17 dholland Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -37,7 +37,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.172 2011/04/11 02:21:01 dholland Exp $); +__KERNEL_RCSID(0, $NetBSD: vfs_lookup.c,v 1.173 2011/04/11 02:21:17 dholland Exp $); #include opt_magiclinks.h @@ -317,7 +317,10 @@ } /* - * XXX should not exist + * XXX should not exist: + * 1. whether a pointer is kernel or user should be statically checkable + * 2. copyin should be handled by the upper part of the syscall layer, + * not in here. */ int pathbuf_maybe_copyin(const char *path, enum uio_seg seg, struct pathbuf **ret) @@ -376,7 +379,10 @@ /* - * Convert a pathname into a pointer to a locked vnode. + * namei: convert a pathname into a pointer to a (maybe-locked) vnode, + * and maybe also its parent directory vnode, and assorted other guff. + * See namei(9) for the interface documentation. + * * * The FOLLOW flag is set when symbolic links are to be followed * when they occur at the end of the name translation process. @@ -397,7 +403,47 @@ */ /* + * Search a pathname. + * This is a very central and rather complicated routine. + * + * The pathname is pointed to by ni_ptr and is of length ni_pathlen. + * The starting directory is passed in. The pathname is descended + * until done, or a symbolic link is encountered. The variable ni_more + * is clear if the path is completed; it is set to one if a symbolic + * link needing interpretation is encountered. + * + * The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on + * whether the name is to be looked up, created, renamed, or deleted. + * When CREATE, RENAME, or DELETE is specified, information usable in + * creating, renaming, or deleting a directory entry may be calculated. + * If flag has LOCKPARENT or'ed into it, the parent directory is returned + * locked. Otherwise the parent directory is not returned. If the target + * of the pathname exists and LOCKLEAF is or'ed into the flag the target + * is returned locked, otherwise it is returned unlocked. When creating + * or renaming and LOCKPARENT is specified, the target may not be .. + * When deleting and LOCKPARENT is specified, the target may be .. + * + * Overall outline of lookup: + * + * dirloop: + * identify next component of name at ndp-ni_ptr + * handle degenerate case where name is null string + * if .. and crossing mount points and on mounted filesys, find parent + * call VOP_LOOKUP routine for next component name + * directory vnode returned in ni_dvp, locked. + * component vnode returned in ni_vp (if it exists), locked. + * if result vnode is mounted on and crossing mount points, + * find mounted on vnode + * if more components of name, do next level at dirloop + * return the answer in ni_vp, locked if LOCKLEAF set + * if LOCKPARENT set, return locked parent in ni_dvp + */ + + +/* * Internal state for a namei operation. + * + * cnp is always equal to ndp-ni_cnp. */ struct namei_state { struct nameidata *ndp; @@ -527,7 +573,7 @@ /* * Get the directory context for the nfsd case, in parallel to * getstartdir. Initializes the rootdir and erootdir state and - * returns a reference to the passed-instarting dir. + * returns a reference to the passed-in starting dir. */ static struct vnode * namei_getstartdir_for_nfsd(struct namei_state *state, struct vnode *startdir) @@ -613,7 +659,7 @@ } /* - * Check for being at a symlink. + * Check for being at a symlink that we're going to follow. */ static inline int namei_atsymlink(struct namei_state *state, struct vnode *foundobj) @@ -624,6 +670,9 @@ /* * Follow a symlink. + * + * Updates searchdir. inhibitmagic causes magic symlinks to not be + * interpreted; this is used by nfsd. */ static inline int namei_follow(struct namei_state *state, int inhibitmagic, @@ -721,42 +770,8 @@ // /* - * Search a pathname. - * This is a very central and rather complicated routine. - * - * The pathname is pointed to by ni_ptr and is of length ni_pathlen. - * The starting directory is passed in. The pathname is descended - *
CVS commit: src
Module Name:src Committed By: mrg Date: Mon Apr 11 04:22:32 UTC 2011 Modified Files: src/sys/arch/acorn26/include: db_machdep.h src/sys/arch/hp300/include: db_machdep.h src/sys/arch/i386/i386: db_machdep.c src/sys/arch/i386/include: db_machdep.h src/sys/arch/luna68k/include: db_machdep.h src/sys/arch/m68k/include: db_machdep.h src/sys/arch/mvme68k/include: db_machdep.h src/sys/arch/pmax/include: db_machdep.h src/sys/arch/sparc/include: db_machdep.h src/sys/arch/x86/x86: db_trace.c src/sys/ddb: db_sym.c db_sym.h files.ddb src/usr.sbin/crash: Makefile Removed Files: src/sys/ddb: db_aout.c db_aout.h Log Message: obsolete DB_AOUT_SYMBOLS. however, we need to leave most of the code in db_sym.[ch] as it is used by the elf version of crash(8). i will be cleaning up the db_sym.c code in a follow up commit to avoid having dead code compiled. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/acorn26/include/db_machdep.h cvs rdiff -u -r1.4 -r1.5 src/sys/arch/hp300/include/db_machdep.h cvs rdiff -u -r1.1 -r1.2 src/sys/arch/i386/i386/db_machdep.c cvs rdiff -u -r1.28 -r1.29 src/sys/arch/i386/include/db_machdep.h cvs rdiff -u -r1.2 -r1.3 src/sys/arch/luna68k/include/db_machdep.h cvs rdiff -u -r1.28 -r1.29 src/sys/arch/m68k/include/db_machdep.h cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mvme68k/include/db_machdep.h cvs rdiff -u -r1.3 -r1.4 src/sys/arch/pmax/include/db_machdep.h cvs rdiff -u -r1.24 -r1.25 src/sys/arch/sparc/include/db_machdep.h cvs rdiff -u -r1.1 -r1.2 src/sys/arch/x86/x86/db_trace.c cvs rdiff -u -r1.41 -r0 src/sys/ddb/db_aout.c cvs rdiff -u -r1.3 -r0 src/sys/ddb/db_aout.h cvs rdiff -u -r1.59 -r1.60 src/sys/ddb/db_sym.c cvs rdiff -u -r1.23 -r1.24 src/sys/ddb/db_sym.h cvs rdiff -u -r1.5 -r1.6 src/sys/ddb/files.ddb cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/crash/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/acorn26/include/db_machdep.h diff -u src/sys/arch/acorn26/include/db_machdep.h:1.7 src/sys/arch/acorn26/include/db_machdep.h:1.8 --- src/sys/arch/acorn26/include/db_machdep.h:1.7 Wed Jan 14 23:14:48 2009 +++ src/sys/arch/acorn26/include/db_machdep.h Mon Apr 11 04:22:30 2011 @@ -1,9 +1,8 @@ -/* $NetBSD: db_machdep.h,v 1.7 2009/01/14 23:14:48 bjh21 Exp $ */ +/* $NetBSD: db_machdep.h,v 1.8 2011/04/11 04:22:30 mrg Exp $ */ #include arm/db_machdep.h /* acorn26 uses ELF */ -#undef DB_AOUT_SYMBOLS #define DB_ELF_SYMBOLS #define DB_ELFSIZE 32 Index: src/sys/arch/hp300/include/db_machdep.h diff -u src/sys/arch/hp300/include/db_machdep.h:1.4 src/sys/arch/hp300/include/db_machdep.h:1.5 --- src/sys/arch/hp300/include/db_machdep.h:1.4 Tue Dec 6 17:05:02 2005 +++ src/sys/arch/hp300/include/db_machdep.h Mon Apr 11 04:22:30 2011 @@ -1,6 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.4 2005/12/06 17:05:02 tsutsui Exp $ */ +/* $NetBSD: db_machdep.h,v 1.5 2011/04/11 04:22:30 mrg Exp $ */ /* Just use the common m68k definition */ #include m68k/db_machdep.h - -#undef DB_AOUT_SYMBOLS Index: src/sys/arch/i386/i386/db_machdep.c diff -u src/sys/arch/i386/i386/db_machdep.c:1.1 src/sys/arch/i386/i386/db_machdep.c:1.2 --- src/sys/arch/i386/i386/db_machdep.c:1.1 Sun Apr 10 20:36:48 2011 +++ src/sys/arch/i386/i386/db_machdep.c Mon Apr 11 04:22:31 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.c,v 1.1 2011/04/10 20:36:48 christos Exp $ */ +/* $NetBSD: db_machdep.c,v 1.2 2011/04/11 04:22:31 mrg Exp $ */ /* * Mach Operating System @@ -27,15 +27,25 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: db_machdep.c,v 1.1 2011/04/10 20:36:48 christos Exp $); +__KERNEL_RCSID(0, $NetBSD: db_machdep.c,v 1.2 2011/04/11 04:22:31 mrg Exp $); #include sys/param.h #include sys/systm.h #include sys/proc.h +#ifndef _KERNEL +#include stdbool.h +#endif + #include machine/frame.h #include machine/trap.h #include machine/intrdefs.h +#include machine/cpu.h + +#include uvm/uvm_prot.h +/* We need to include both for ddb and crash(8). */ +#include uvm/uvm_pmap.h +#include machine/pmap.h #include machine/db_machdep.h #include ddb/db_sym.h Index: src/sys/arch/i386/include/db_machdep.h diff -u src/sys/arch/i386/include/db_machdep.h:1.28 src/sys/arch/i386/include/db_machdep.h:1.29 --- src/sys/arch/i386/include/db_machdep.h:1.28 Sun Apr 10 20:36:48 2011 +++ src/sys/arch/i386/include/db_machdep.h Mon Apr 11 04:22:30 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.28 2011/04/10 20:36:48 christos Exp $ */ +/* $NetBSD: db_machdep.h,v 1.29 2011/04/11 04:22:30 mrg Exp $ */ /* * Mach Operating System @@ -139,9 +139,8 @@ #endif /* - * We use either a.out or Elf32 symbols in DDB. + * We use Elf32 symbols in DDB. */ -#define DB_AOUT_SYMBOLS #define DB_ELF_SYMBOLS #define DB_ELFSIZE 32 Index: src/sys/arch/luna68k/include/db_machdep.h diff -u
CVS commit: src/sys/ddb
Module Name:src Committed By: mrg Date: Mon Apr 11 04:26:18 UTC 2011 Modified Files: src/sys/ddb: db_sym.c Log Message: avoid compiling dead code into crash. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/ddb/db_sym.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/ddb/db_sym.c diff -u src/sys/ddb/db_sym.c:1.60 src/sys/ddb/db_sym.c:1.61 --- src/sys/ddb/db_sym.c:1.60 Mon Apr 11 04:22:32 2011 +++ src/sys/ddb/db_sym.c Mon Apr 11 04:26:18 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: db_sym.c,v 1.60 2011/04/11 04:22:32 mrg Exp $ */ +/* $NetBSD: db_sym.c,v 1.61 2011/04/11 04:26:18 mrg Exp $ */ /* * Mach Operating System @@ -27,7 +27,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: db_sym.c,v 1.60 2011/04/11 04:22:32 mrg Exp $); +__KERNEL_RCSID(0, $NetBSD: db_sym.c,v 1.61 2011/04/11 04:26:18 mrg Exp $); #ifdef _KERNEL_OPT #include opt_ddbparam.h @@ -46,7 +46,8 @@ #ifndef _KERNEL #define TBLNAME netbsd -static int use_ksyms = true; +#define use_ksyms 0 + const db_symformat_t *db_symformat; static db_forall_func_t db_sift; extern db_symformat_t db_symformat_aout; @@ -66,10 +67,8 @@ ksyms_addsyms_elf(symsize, vss, vse); /* Will complain if necessary */ #else /* _KERNEL */ db_symformat = db_symformat_elf; - if ((*db_symformat-sym_init)(symsize, vss, vse, TBLNAME) == true) { - use_ksyms = false; - return; - } + if ((*db_symformat-sym_init)(symsize, vss, vse, TBLNAME) != true) + printf(sym_init failed); #endif /* _KERNEL */ }
CVS commit: src/lib/libc/gen
Module Name:src Committed By: jruoho Date: Mon Apr 11 05:59:11 UTC 2011 Modified Files: src/lib/libc/gen: fmtmsg.3 Log Message: Markup improvements. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libc/gen/fmtmsg.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/gen/fmtmsg.3 diff -u src/lib/libc/gen/fmtmsg.3:1.6 src/lib/libc/gen/fmtmsg.3:1.7 --- src/lib/libc/gen/fmtmsg.3:1.6 Wed Apr 30 13:10:50 2008 +++ src/lib/libc/gen/fmtmsg.3 Mon Apr 11 05:59:11 2011 @@ -1,4 +1,4 @@ -.\ $NetBSD: fmtmsg.3,v 1.6 2008/04/30 13:10:50 martin Exp $ +.\ $NetBSD: fmtmsg.3,v 1.7 2011/04/11 05:59:11 jruoho Exp $ .\ .\ Copyright (c) 1999 The NetBSD Foundation, Inc. .\ All rights reserved. @@ -27,7 +27,7 @@ .\ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\ POSSIBILITY OF SUCH DAMAGE. .\ -.Dd September 10, 1999 +.Dd April 11, 2011 .Dt FMTMSG 3 .Os .Sh NAME @@ -56,7 +56,7 @@ from the condition causing the message and where to display the message is specified in .Fa classification . -.Ss classification +.Ss Classification The .Fa classification argument consists of a major classification and several sub-classifications. @@ -65,8 +65,8 @@ may be specified for each (sub-)classification. The following classifications are available: -.Bl -tag -width MessageXSourceXSub-classificationsXX -.It Major Classifications +.Bl -tag -width XXX +.It Em Major classifications The source of the condition. Available identifiers are: .Dv MM_HARD @@ -75,7 +75,7 @@ (software), and .Dv MM_FIRM (firmware). -.It Message Source Sub-classifications +.It Em Message source sub-classifications The type of software detecting the condition. Available identifiers are: .Dv MM_APPL @@ -84,14 +84,14 @@ (utility), and .Dv MM_OPSYS (operating system). -.It Display Sub-classifications +.It Em Display sub-classifications The displays the formatted messages is to be written to. Available identifiers are: .Dv MM_PRINT (standard error stream) and .Dv MM_CONSOLE (system console). -.It Status Sub-classifications +.It Em Status sub-classifications The capability of the calling software to recover from the condition. Available identifiers are: .Dv MM_RECOVER @@ -105,7 +105,7 @@ is to be supplied, .Dv MM_NULLMC must be specified. -.Ss label +.Ss Label The .Fa label argument identifies the source of the message. @@ -117,12 +117,12 @@ is to be supplied, .Dv MM_NULLLBL must be specified. -.Ss severity +.Ss Severity The seriousness of the condition causing the message. The following .Fa severity levels are available: -.Bl -tag -width MM_WARNINGXX +.Bl -tag -width MM_WARNING -offset indent .It Dv MM_HALT The software has encountered a severe fault and is halting. .It Dv MM_ERROR @@ -138,7 +138,7 @@ level is to be supplied, .Dv MM_NOSEV must be specified. -.Ss text +.Ss Text The description of the condition the software encountered. The character string is not limited to a specific size. @@ -148,7 +148,7 @@ is to be supplied, .Dv MM_NOTXT must be specified. -.Ss action +.Ss Action The first step to be taken to recover from the condition the software encountered; it will be preceded by the prefix .Dq TO FIX: . @@ -159,7 +159,7 @@ is to be supplied, .Dv MM_NOACT must be specified. -.Ss tag +.Ss Tag The on-line documentation which provides further information about the condition and the message, such as .Dq Xr fmtmsg 3 .
CVS commit: src
Module Name:src Committed By: jruoho Date: Sun Apr 10 06:11:47 UTC 2011 Modified Files: src/distrib/sets/lists/tests: mi src/tests/lib/libm: Makefile Added Files: src/tests/lib/libm: t_log.c Log Message: Add a test case for PR lib/41931 reported by he@. It was verified that these fail on NetBSD 5.99.48 amd64 but pass on amd64 Linux (glibc 2.7). To generate a diff of this commit: cvs rdiff -u -r1.301 -r1.302 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.4 -r1.5 src/tests/lib/libm/Makefile cvs rdiff -u -r0 -r1.1 src/tests/lib/libm/t_log.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.