OpenBSD src changes summary for 2015-06-28 to 2015-07-05 inclusive ==================================================================
bin/ksh bin/ps distrib/armv7 distrib/miniroot distrib/sets etc/Makefile etc/changelist etc/etc.armv7/Makefile.inc etc/etc.octeon/MAKEDEV etc/etc.octeon/MAKEDEV.md etc/mtree/special gnu lib/csu lib/libc lib/libssl lib/libutil libexec/ld.so regress/lib regress/sys regress/usr.bin regress/usr.sbin sbin/iked share/man share/mk sys/arch/alpha/alpha sys/arch/alpha/include sys/arch/amd64/amd64 sys/arch/amd64/include sys/arch/arm/include sys/arch/armv7/conf sys/arch/hppa/include sys/arch/i386/i386 sys/arch/i386/include sys/arch/i386/isa sys/arch/m88k/include sys/arch/m88k/m88k sys/arch/mips64/include sys/arch/octeon/conf sys/arch/octeon/dev sys/arch/octeon/octeon sys/arch/powerpc/include sys/arch/sparc64/include sys/arch/vax/if sys/arch/vax/mscp sys/arch/vax/vax sys/conf sys/dev sys/dev/pci sys/dev/pcmcia sys/dev/usb sys/kern sys/net sys/net80211 sys/netinet sys/netinet6 sys/sys usr.bin usr.bin/calendar usr.bin/lorder usr.bin/openssl usr.bin/ssh usr.bin/sudo usr.bin/units usr.sbin/httpd usr.sbin/pkg_add usr.sbin/syslogd == bin =============================================================== 01/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/bin ksh ~ ksh.1 > Use "alternation" consistently > ok jmc@ (feinerer@) ps ~ extern.h ~ print.c ~ ps.1 ~ ps.c > After removing the p_swtime from the kernel, ps always printed 0.0 > as %cpu time. Remove the calculation in ps that includes the process > lifetime. Just print the p_pctcpu value, that was done before when > ps was called with -C. Keep -C as a no-op for existing scripts. > OK millert@ (bluhm@) == distrib =========================================================== 02/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/distrib armv7 ~ ramdisk/Makefile ~ ramdisk/install.md > enable vexpress (jsg@) miniroot ~ dot.profile > Use ksh style tests like in the rest of the installer scripts. > OK krw@ halex@ (rpe@) ~ dot.profile ~ install.sub > Use [aA]* instead of a*|A* in case-blocks. > OK krw@ > @halex agreed on this in a similar diff (rpe@) ~ install.sub > In case-statements where single and multiline commands are used, > put the terminating ;; always on its own line. > discussed with and OK krw@ halex@ (rpe@) sets ~ lists/base/md.macppc ~ lists/base/md.socppc ~ lists/comp/md.macppc ~ lists/comp/md.socppc > sync (deraadt@) ~ lists/base/md.alpha ~ lists/base/md.amd64 ~ lists/base/md.armish ~ lists/base/md.armv7 ~ lists/base/md.aviion ~ lists/base/md.hppa ~ lists/base/md.hppa64 ~ lists/base/md.i386 ~ lists/base/md.landisk ~ lists/base/md.loongson ~ lists/base/md.luna88k ~ lists/base/md.macppc ~ lists/base/md.octeon ~ lists/base/md.sgi ~ lists/base/md.socppc ~ lists/base/md.sparc ~ lists/base/md.sparc64 ~ lists/base/md.vax ~ lists/base/md.zaurus ~ lists/comp/mi > sync (deraadt@) ~ lists/base/md.alpha ~ lists/base/md.amd64 ~ lists/base/md.armish ~ lists/base/md.armv7 ~ lists/base/md.aviion ~ lists/base/md.hppa ~ lists/base/md.hppa64 ~ lists/base/md.i386 ~ lists/base/md.landisk ~ lists/base/md.loongson ~ lists/base/md.luna88k ~ lists/base/md.macppc ~ lists/base/md.octeon ~ lists/base/md.sgi ~ lists/base/md.socppc ~ lists/base/md.sparc ~ lists/base/md.sparc64 ~ lists/base/md.zaurus ~ lists/base/mi ~ lists/etc/mi ~ lists/man/mi > sync (deraadt@) == etc =============================================================== 03/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc Makefile ~ Makefile > Remove sudoers (millert@) changelist ~ changelist > Remove sudoers (millert@) etc.armv7/Makefile.inc ~ etc.armv7/Makefile.inc > enable vexpress (jsg@) etc.octeon/MAKEDEV ~ etc.octeon/MAKEDEV > regen (jmatthew@) etc.octeon/MAKEDEV.md ~ etc.octeon/MAKEDEV.md > add usb devices (jmatthew@) mtree/special ~ mtree/special > Remove sudoers (millert@) == gnu =============================================================== 04/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/gnu gnu ~ gcc/gcc/config/sparc/openbsd.h > Link static pie binaries against rcrt0.o (miod@) == lib =============================================================== 05/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib csu ~ boot.h ~ sparc/md_init.h > static pie support for sparc. (miod@) libc ~ locale/setlocale.c > remove new_categories variable from global. > This variable is used as temporary buffer in order to do checking > before copying the content to current_categories variable. > Switch it as local variable in setlocale function. Adapts some functions. > the commit collapse 3 proposed diffs on tech@, and all OK stsp@ (semarie@) ~ locale/Makefile.inc > There are no ${LIBCSRCDIR}/arch/${MACHINE_CPU}/locale directories in > cvs. Remove the unused search path from Makefile.inc > "fine with me" stsp@ (semarie@) libssl ~ src/ssl/ssl_lib.c ~ src/ssl/ssl_locl.h > Convert ssl_bytes_to_cipher_list to CBS. > Link in the new 'unit' regress and expand the invalid tests to include > some that would fail before the CBS conversion. > input + ok miod@ jsing@ (doug@) ~ src/crypto/arm_arch.h > fix the build on arm after the recent addition of -Wundef > ok doug@ deraadt@ (jsg@) libutil ~ imsg.c ~ imsg-buffer.c > bzero cmsgbuf before using it, silences valgrind warnings. > henning@ "sure" (brynet@) == libexec =========================================================== 06/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/libexec ld.so ~ sparc/archdep.h > Correctly handle relative-type relocations; very old ld.so bug which got > fixed everywhere but on sparc for some unknown reason (and did not cause > any havoc in real life). (miod@) == regress =========================================================== 07/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/regress lib ~ libssl/Makefile ~ libssl/unit/cipher_list.c > Convert ssl_bytes_to_cipher_list to CBS. > Link in the new 'unit' regress and expand the invalid tests to include > some that would fail before the CBS conversion. > input + ok miod@ jsing@ (doug@) ~ libssl/unit/cipher_list.c > specify the array initializer value > noted by kinichiro from github (bcook@) sys ~ kern/extent/Makefile > Make this pass again on 32-bit platforms. (miod@) usr.bin ~ ssh/unittests/Makefile.inc > don't expect SSH v.1 in unittests (djm@) ~ ssh/cert-hostkey.sh ~ ssh/cert-userkey.sh ~ ssh/unittests/sshkey/test_sshkey.c > legacy v00 certificates are gone; adapt and don't try to test them; > "sure" markus@ dtucker@ (djm@) usr.sbin ~ syslogd/funcs.pl ~ syslogd/syslogd.pl + syslogd/args-block-prog-quick.pl + syslogd/args-block-prog.pl > Add tests for the !prog and !!prog and !* keywords in syslog.conf. (bluhm@) ~ syslogd/args-client-udp.pl ~ syslogd/args-client-udp4.pl ~ syslogd/args-client-udp6.pl ~ syslogd/args-only4.pl ~ syslogd/args-only6.pl > Use fstat to check that the privsep parent of syslogd closes all > internet sockets also when invoked with -u. (bluhm@) + syslogd/args-selector.pl > Test that selectors, which specify facility and severity level for > each logfile, work as documented in syslog.conf(5). (bluhm@) + syslogd/args-block-duplicate.pl + syslogd/args-block-host-quick.pl + syslogd/args-block-host.pl + syslogd/args-block-prog-host-quick.pl + syslogd/args-block-prog-host.pl > Add test for blocks in syslog.conf constructed with the +host and > ++host and +* keyword. (bluhm@) + syslogd/args-client-bind-only4.pl + syslogd/args-client-bind-only6.pl + syslogd/args-client-bind-port.pl + syslogd/args-client-bind.pl + syslogd/args-client-bind4-port.pl + syslogd/args-client-bind4.pl + syslogd/args-client-bind6-port.pl + syslogd/args-client-bind6.pl > Add tests for syslog -U. (bluhm@) ~ syslogd/args-dropped-sighup-tls.pl > Check the receive line count less strict to avoid false negatives. (bluhm@) == sbin ============================================================== 08/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sbin iked ~ parse.y > Terminate 'config' keyword array with a NULL element. > Reported by trondd at kagu-tsuchi ! com, thanks! (mikeb@) == share ============================================================= 09/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/share man ~ man9/Makefile + man9/srp_enter.9 > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) ~ man9/Makefile > shuffle the list of files so tsleep.9 isnt in the middle of all the > mangpages starting with s. (dlg@) ~ man9/srp_enter.9 > mikeb@ suggested making it clear that srp_enter and srp_leave pairs > have to be called in the same context. (dlg@) ~ man8/man8.octeon/MAKEDEV.8 > sync (deraadt@) ~ man4/rdomain.4 > various improvements from remi locherer; > i've tweaked it a bit, based on feedback from claudio and phessler > ok phessler (jmc@) ~ man5/bsd.port.mk.5 > document PKGPATHS, used together with PKGNAMES. > fix PKGNAMES description (only relates to actual BUILD_PACKAGES) (espie@) ~ man9/VOP_LOOKUP.9 > Document the new 'fflag' argument to VOP_POLL(). > From Martin Natano (millert@) ~ man9/km_alloc.9 > Include missing 'const' references in man page and fix some parameter names > that didn't match the code. (mlarkin@) mk ~ bsd.own.mk > Enable static pie on sparc; be sure to upgrade your compiler before your > next build (or wait for the snapshot to reach the mirrors) (miod@) == sys =============================================================== 10/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys arch/alpha/alpha ~ machdep.c > Correctly restore ipl in fpusave_proc() when we have to busy loop. (miod@) arch/alpha/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/amd64/amd64 ~ db_trace.c ~ locore.S ~ spl.S ~ trap.c ~ vector.S > Split AST handling from trap() into ast() and get rid of T_ASTFLT. > Don't skip the AST check when returning from *fork() in the child. > Make sure to count interrupts even when they're deferred or stray. > testing by krw@, and then many via snapshots (guenther@) ~ locore.S ~ machdep.c ~ process_machdep.c ~ vm_machdep.c > Force the return to userspace from execve to go through iretq to get all > registers. This lets us kill the special handling of pid 1 in fork and > merge {proc,child}_trampoline(). Do the same if ptrace(PT_SETREGS) is used > to modify registers. > ok mlarkin@ kettenis@ (guenther@) ~ vector.S > Fix trap setup for double faults; error pointed out by Wei Liu a few months > ago and I forgot to commit this until now. > From Wei Liu <wei.liu2 at citrix.com> > ok mikeb@, guenther@, ratchov@ (mlarkin@) ~ pmap.c > Clean up a needless check in an if statement. > ok kettenis@ (mlarkin@) arch/amd64/include ~ trap.h > Split AST handling from trap() into ast() and get rid of T_ASTFLT. > Don't skip the AST check when returning from *fork() in the child. > Make sure to count interrupts even when they're deferred or stray. > testing by krw@, and then many via snapshots (guenther@) ~ segments.h > LDT is gone and not coming back (guenther@) ~ cpu.h > Force the return to userspace from execve to go through iretq to get all > registers. This lets us kill the special handling of pid 1 in fork and > merge {proc,child}_trampoline(). Do the same if ptrace(PT_SETREGS) is used > to modify registers. > ok mlarkin@ kettenis@ (guenther@) ~ pmap.h > Remove some unused #defines > ok guenther@, millert@ (mlarkin@) ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/arm/include ~ atomic.h > Implement membar_* for armv7 with the dmb instruction. The previous > sys/sys/atomic.h default of __sync_synchronize() resulted in "dmb sy", > a full system barrier for all memory operations. With this change > membar_producer() switches to "dmb st" (StoreStore). > earlier version ok rapha@ (jsg@) arch/armv7/conf ~ GENERIC ~ RAMDISK > enable vexpress (jsg@) arch/hppa/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/i386/i386 ~ apicvec.s ~ db_trace.c ~ kgdb_machdep.c ~ locore.s ~ trap.c ~ vector.s > Split AST handling from trap() into ast() and get rid of T_ASTFLT > testing by krw@, and then many via snapshots (guenther@) ~ pmap.c ~ pmapae.c > Make the i386 pmap (almost) mpsafe by protecting the pmap itself, the pv > lists and the apte with a mutex. Rearrange some code to avoid > sleeping/spinning with one of these locks held. This should make > pmap_enter(9), pmap_remove(9) and pmap_page_protect(9) safe to use without > holding the kernel lock. Unfortunately there still seems to be an issue > that causes deadlocks under pressure. That shouldn't be an issue as > long as uvm still calls the pmap functions with the kernel lock held. > Hopefully committed this will help finding the last bugs. > ok mlarkin@, deraadt@ (kettenis@) arch/i386/include ~ trap.h > Split AST handling from trap() into ast() and get rid of T_ASTFLT > testing by krw@, and then many via snapshots (guenther@) ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) ~ pmap.h > Make the i386 pmap (almost) mpsafe by protecting the pmap itself, the pv > lists and the apte with a mutex. Rearrange some code to avoid > sleeping/spinning with one of these locks held. This should make > pmap_enter(9), pmap_remove(9) and pmap_page_protect(9) safe to use without > holding the kernel lock. Unfortunately there still seems to be an issue > that causes deadlocks under pressure. That shouldn't be an issue as > long as uvm still calls the pmap functions with the kernel lock held. > Hopefully committed this will help finding the last bugs. > ok mlarkin@, deraadt@ (kettenis@) ~ mutex.h > tweak MUTEX_ASSERT_LOCKED and MUTEX_ASSERT_UNLOCKED to only look > at the owner. every other arch does it the same, so this is to > reduce differences between our platforms. > ok miod@ (dlg@) arch/i386/isa ~ icu.s > Split AST handling from trap() into ast() and get rid of T_ASTFLT > testing by krw@, and then many via snapshots (guenther@) arch/m88k/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) ~ mutex.h > copy MUTEX_ASSERT_LOCKED and MUTEX_ASSERT_UNLOCKED from alpha. > the previous asserts checked if the mutex was locked by any cpu or > not when they should have been checking if the current cpu has the > lock or not. > found by miod after i enabled pool_gc again. > ok miod@ (dlg@) ~ atomic.h > Fix cast in atomic_swap_ptr() (miod@) ~ mutex.h > Rename mtx_cpu to mtx_owner for consistency with the other platforms. > (miod@) arch/m88k/m88k ~ genassym.cf ~ mutex.S > Rename mtx_cpu to mtx_owner for consistency with the other platforms. > (miod@) arch/mips64/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/octeon/conf ~ GENERIC ~ RAMDISK > enable octdwctwo and add umass (jmatthew@) arch/octeon/dev ~ octdwctwo.c > Put the newline at the right place. (miod@) arch/octeon/octeon ~ autoconf.c > Add "sd" to be specifiedit as "rootdev=" boot parameter. > ok jmatthew (yasuoka@) arch/powerpc/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/sparc64/include ~ cpu.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) arch/vax/if ~ if_qe.c > count outgoing packets like every other driver. > ok miod@ (dlg@) ~ if_de.c > Fix misleading indent (miod@) arch/vax/mscp ~ mscp_subr.c ~ mscpvar.h > replace the manual buf list management with a fifo bufq. it simplifies > the code in some cases and makes it generally more readable. > this has been tested in simh, real hardware may or may not work anyway. > ok miod@ (dlg@) ~ mscp_subr.c > get rid of some if 0 code that refers to b_actf. > ok miod@ (dlg@) arch/vax/vax ~ autoconf.c > replace the manual buf list management with a fifo bufq. it simplifies > the code in some cases and makes it generally more readable. > this has been tested in simh, real hardware may or may not work anyway. > ok miod@ (dlg@) conf ~ files > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) dev ~ softraid_crypto.c > fix a format specifier used in SR_DEBUG printfs. > from Karel Gardas (gardask at gmail.com) (mlarkin@) dev/pci ~ drm/i915/intel_display.c > Read the lower 16-bits of the GCFGC "double word". Potentially fixes > issues > with some modes on machines with the 915GM chipset. > discussed with jsg@ (kettenis@) ~ if_oce.c > Hide ETHER_ALIGN mbuf adjustment under "#ifdef __STRICT_ALIGNMENT" > for now to get jumbo frames working. oce(4) will need the same > treatment as ix(4) when sparc64 support will be implemented. > Tested by Pedro Caetano <pedrocaetano at binaryflows ! com>, thanks! > (mikeb@) dev/pcmcia ~ if_xe.c > dont double count if_ibytes here, it gets done by something inside > if_input. > from and ok mpi@ (dlg@) dev/usb ~ dwc2/dwc2.c ~ dwc2/dwc2.h ~ dwc2/dwc2_core.c ~ dwc2/dwc2_core.h ~ dwc2/dwc2_coreintr.c ~ dwc2/dwc2_hcd.c ~ dwc2/dwc2_hcd.h ~ dwc2/dwc2_hcdddma.c ~ dwc2/dwc2_hcdintr.c ~ dwc2/dwc2_hcdqueue.c > Convert list_head lists into TAILQs and LISTs and fix up header includes > so we can build dwc2 without extra stuff. > tested by several edgerouter lite owners, ok jasper@ (jmatthew@) ~ usb.h > Add missing definition of "usb_interface_assoc_descriptor" needed to for > a tool parsing device descriptors. > Use the same name as DragonFly/FreeBSD since they export it to userland. > From Ludovic Coues. (mpi@) ~ uhub.c > Move the logic to handle a "connect status change" from uhub_explore() > into its own functions. > Needed for upcoming "port link state" change handling. > Tested by sobrado@ (mpi@) ~ xhci.c > Clear root hub's "port link state". > Allow to re-plug USB3 devices on the root hub withtout going through a > suspend/resume cycle (or rebooting) with Intel ICH7 xHCI as found the > hardway by sobrado@. > Debugging help from M.A.R. Osorio, tested by sobrado@ (mpi@) ~ if_upl.c > Rename if_output() into if_enqueue() to avoid confusion with comments > talking about (*ifp->if_output)(). > ok claudio@, dlg@ (mpi@) ~ usbdevs > add id for TEMPerHUM sensor > ok mpi@ (jung@) ~ usbdevs.h ~ usbdevs_data.h > regen (jung@) kern ~ uipc_mbuf2.c ~ uipc_socket.c ~ uipc_socket2.c ~ uipc_usrreq.c > Get rid of the undocumented & temporary* m_copy() macro added for > compatibility with 4.3BSD in September 1989. > *Pick your own definition for "temporary". > ok bluhm@, claudio@, dlg@ (mpi@) ~ init_main.c + kern_srp.c > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) net ~ if.c ~ if_ethersubr.c ~ if_trunk.c ~ if_vlan.c > count if_ibytes in if_input like we do for if_ipackets. > tweaks and ok mpi@ (dlg@) ~ route.c > Never cache a RTF_GATEWAY route as next hop for a gateway route. > This prevents rtentry loops when rt->rt_gwroute points to rt leading > to an infamous "rtentry leak" panic, easily triggered by dhclient(8) > trying to remove a route after resuming a machine. > This bug is at least 20 years old! 4.4BSD-Lite2 had a fix for it in > its X.25 output routine but apparently it never made it into OpenBSD. > ok claudio@ (mpi@) ~ if_bridge.c > Move the specialized m_copym2() preserving the alignment of the payload > after the Ethernet header in its own function and use it in bridge_input(). > This should fix alignment issues kettenis@ is seeing. > ok bluhm@, claudio@ (mpi@) ~ bridgestp.c ~ if.c ~ if_bridge.c ~ if_ethersubr.c ~ if_gif.c ~ if_mpe.c ~ if_pppx.c ~ if_spppsubr.c ~ if_trunk.c ~ if_tun.c ~ if_var.h ~ if_vlan.c ~ trunklacp.c > Rename if_output() into if_enqueue() to avoid confusion with comments > talking about (*ifp->if_output)(). > ok claudio@, dlg@ (mpi@) ~ if_ethersubr.c ~ pf.c ~ raw_usrreq.c ~ rtsock.c > Get rid of the undocumented & temporary* m_copy() macro added for > compatibility with 4.3BSD in September 1989. > *Pick your own definition for "temporary". > ok bluhm@, claudio@, dlg@ (mpi@) ~ if.c ~ if_bridge.c ~ if_bridge.h ~ if_ethersubr.c ~ if_trunk.c ~ if_var.h ~ if_vlan.c > By design if_input_process() needs to hold a reference on the receiving > ifp in order to access its ifih handlers. > So get rid of if_get() in the various ifih handlers we know the ifp is > live at this point. > ok dlg@ (mpi@) ~ if_bridge.c ~ if_trunk.c > Unify the check for up & running between all pseudo-drivers. (mpi@) ~ if.c ~ if_ethersubr.c > Move back rdomain's check into ether_output() otherwise it triggers > if a pseudo-interface is on a different rdomain than its parent. > Sorry for the inconvenience, I hope you'll fly again with us. > Regression reported by and ok semarie@, ok phessler@ (mpi@) ~ if_ethersubr.c > most of the destinations for mbufs in ether_input are mpsafe except for > pipex and bridge. this puts KERNEL_LOCK/KERNEL_UNLOCK around the pipex > chunk till we can give it some mp love. > ok yasuoka@ mpi@ (dlg@) net80211 ~ ieee80211_input.c ~ ieee80211_output.c > Rename if_output() into if_enqueue() to avoid confusion with comments > talking about (*ifp->if_output)(). > ok claudio@, dlg@ (mpi@) netinet ~ ip_carp.c > count if_ibytes in if_input like we do for if_ipackets. > tweaks and ok mpi@ (dlg@) ~ ip_carp.c > Rename if_output() into if_enqueue() to avoid confusion with comments > talking about (*ifp->if_output)(). > ok claudio@, dlg@ (mpi@) ~ ip_mroute.c ~ ip_output.c ~ raw_ip.c ~ tcp_output.c ~ udp_usrreq.c > Get rid of the undocumented & temporary* m_copy() macro added for > compatibility with 4.3BSD in September 1989. > *Pick your own definition for "temporary". > ok bluhm@, claudio@, dlg@ (mpi@) ~ ip_carp.c ~ ip_ether.c > By design if_input_process() needs to hold a reference on the receiving > ifp in order to access its ifih handlers. > So get rid of if_get() in the various ifih handlers we know the ifp is > live at this point. > ok dlg@ (mpi@) netinet6 ~ icmp6.c ~ ip6_forward.c ~ ip6_mroute.c ~ ip6_output.c ~ raw_ip6.c > Get rid of the undocumented & temporary* m_copy() macro added for > compatibility with 4.3BSD in September 1989. > *Pick your own definition for "temporary". > ok bluhm@, claudio@, dlg@ (mpi@) sys ~ mbuf.h > Get rid of the undocumented & temporary* m_copy() macro added for > compatibility with 4.3BSD in September 1989. > *Pick your own definition for "temporary". > ok bluhm@, claudio@, dlg@ (mpi@) ~ param.h + srp.h > introduce srp, which according to the manpage i wrote is short for > "shared reference pointers". > srp allows concurrent access to a data structure by multiple cpus > while avoiding interlocking cpu opcodes. it manages its own reference > counts and the garbage collection of those data structure to avoid > use after frees. > internally srp is a twisted version of hazard pointers, which are > a relative of RCU. > jmatthew wrote the bulk of a hazard pointer implementation and > changed bpf to use it to allow mpsafe access to bpfilters. however, > at s2k15 we were trying to apply it to other data structures but > the memory overhead of every hazard pointer would have blown out > significantly in several uses cases. a bulk of our time at s2k15 > was spent reworking hazard pointers into srp. > this diff adds the srp api and adds the necessary metadata to struct > cpuinfo on our MP architectures. srp on uniprocessor platforms has > alternate code that is optimised because it knows there'll be no > concurrent access to data by multiple cpus. > srp is made available to the system via param.h, so it should be > available everywhere in the kernel. > the docs likely need improvement cos im too close to the implementation. > ok mpi@ (dlg@) == usr.bin =========================================================== 11/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin usr.bin ~ Makefile > Sudo has moved to ports. (millert@) calendar ~ calendars/calendar.computer > vax-11/780 announced 1977, not 1978; > from john marshall, freebsd pr #200961 > ok miod (jmc@) lorder ~ lorder.sh > Switch to standard, non-historical sort(1) and join(1) usage. ok millert@ > (jca@) openssl ~ speed.c > Repair algorithm name array after 1.6. (miod@) ssh ~ sandbox-systrace.c > add getpid to sandbox, reachable by grace_alarm_handler > reported by Jakub Jelen; bz#2419 (djm@) ~ channels.c > Fix math error in remote window calculations that causes eventual stalls > for datagram channels. Reported by Georg Wicherski, ok markus@ (djm@) ~ channels.c > fatal() when a remote window update causes the window value to > overflow. Reported by Georg Wicherski, ok markus@ (djm@) ~ servconf.c > reset default PermitRootLogin to 'yes' (momentarily, for release) (djm@) ~ version.h > openssh-6.9 (djm@) ~ servconf.c > put back default PermitRootLogin=no (djm@) ~ channels.c ~ channels.h ~ clientloop.c > better refuse ForwardX11Trusted=no connections attempted after > ForwardX11Timeout expires; reported by Jann Horn (djm@) ~ servconf.c > twiddle; (this commit marks the openssh-6.9 release) (djm@) ~ servconf.c > twiddle PermitRootLogin back (djm@) ~ Makefile.inc > Compile-time disable SSH v.1 again (djm@) ~ auth-options.c ~ authfd.c ~ authfile.c ~ key.c ~ key.h ~ krl.c ~ myproposal.h ~ ssh-add.c ~ ssh-keygen.c ~ sshd.c ~ sshkey.c ~ sshkey.h > delete support for legacy v00 certificates; "sure" markus@ dtucker@ (djm@) ~ myproposal.h ~ ssh_config.5 ~ sshd.c > turn off 1024 bit diffie-hellman-group1-sha1 key exchange method > (already off in server, this turns it off in the client by default too) > ok dtucker@ (djm@) ~ ssh-keygen.1 ~ ssh-keygen.c ~ ssh.h ~ sshd.8 ~ sshd.c ~ sshd_config.5 > refuse to generate or accept RSA keys smaller than 1024 bits; > feedback and ok dtucker@ (djm@) ~ ssh-keysign.c > add an XXX reminder for getting correct key paths from sshd_config (djm@) ~ sshkey.h > another SSH_RSA_MINIMUM_MODULUS_SIZE that needed cranking (djm@) sudo - ChangeLog - HISTORY - INSTALL - INSTALL.configure - LICENSE - Makefile - Makefile.in - Makefile.inc - PORTING - README - README.LDAP - TROUBLESHOOTING - UPGRADE - WHATSNEW - aclocal.m4 - acsite.m4 - alias.c - alloc.c - audit.c - check.c - compat.h - config.guess - config.h - config.h.in - config.sub - configure - configure.in - def_data.c - def_data.h - def_data.in - defaults.c - defaults.h - env.c - error.c - error.h - fileops.c - find_path.c - getspwuid.c - gettime.c - goodpath.c - gram.y - indent.pro - ins_2001.h - ins_classic.h - ins_csops.h - ins_goons.h - install-sh - insults.h - interfaces.c - interfaces.h - lbuf.c - lbuf.h - ldap.c - list.c - list.h - logging.c - logging.h - ltmain.sh - match.c - mkdefaults - mkinstalldirs - nonunix.h - parse.c - parse.h - pathnames.h - pathnames.h.in - pwutil.c - redblack.c - redblack.h - sample.sudoers - schema.ActiveDirectory - schema.OpenLDAP - schema.iPlanet - set_perms.c - sudo.c - sudo.h - sudo.mdoc.in - sudo_edit.c - sudo_noexec.c - sudo_nss.c - sudo_nss.h - sudo_usage.h - sudo_usage.h.in - sudoers - sudoers.ldap.mdoc.in - sudoers.mdoc.in - sudoers2ldif - term.c - testsudoers.c - tgetpass.c - toke.l - tsgetgrpw.c - varsub - vasgroups.c - visudo.c - visudo.mdoc.in - zero_bytes.c - auth/API - auth/afs.c - auth/aix_auth.c - auth/bsdauth.c - auth/dce.c - auth/fwtk.c - auth/kerb4.c - auth/kerb5.c - auth/pam.c - auth/passwd.c - auth/rfc1938.c - auth/secureware.c - auth/securid.c - auth/securid5.c - auth/sia.c - auth/sudo_auth.c - auth/sudo_auth.h - lib/Makefile - noexec/Makefile - noexec/shlib_version - sudo/Makefile - visudo/Makefile > Remove sudo, it is now in ports. (millert@) units ~ units.lib > update currency exchange rates; (jmc@) == usr.sbin ========================================================== 12/12 == http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.sbin httpd ~ patterns.7 > Add a small paragraph about some difference with Lua implementation. > Suggestion from Theo Buehler. > OK jmc@ reyk@ (semarie@) ~ patterns.7 > new sentence, new line; > my apologies to semarie for not pointing this out when he asked for an > ok... (jmc@) pkg_add ~ OpenBSD/PkgAdd.pm > cosmetic comma is not really necessary, better to have a raw list of > packages. Pointed out by theo. (espie@) syslogd ~ syslog.conf.5 ~ syslogd.c > Add the possiblity to store all syslog messages received from a > specific host into a single log file. For programs this is already > implemented for !prog blocks. So do the same with +host for > hostnames. > Based on a diff from Gregory Edigarov; OK jung@ sthen@ (bluhm@) ~ privsep.c ~ syslogd.8 ~ syslogd.c ~ syslogd.h > Add a -U command line switch for syslogd to specify an explict bind > address to receive UDP packets. One advantge over -u and the * > sockets is that you can bind to localhost and divert the packets > with pf. It is also possible to use a non standard port. > OK jung@ jmc@ (bluhm@) ~ syslogd.c > Sort the syslogd getopt string and switch cases according to the > man page. This makes it easier to check wether both are consistent. > OK jung@ (bluhm@) ~ syslogd.c > To avoid copying the socket creation code for upcoming TCP listen > again, move it to the common function socket_bind(). > OK millert@ (bluhm@) ~ syslogd.c > Let syslogd run with non-blocking sockets. Replace the existing > fcntl(O_NONBLOCK) with the simpler SOCK_NONBLOCK and add this flag > to the UDP sockets. React to EWOULDBLOCK although it should not > happen. > OK benno@ (bluhm@) =============================================================================== _______________________________________________ owc mailing list [email protected] http://www.squish.net/mailman/listinfo/owc
