OpenBSD cvs log

created 2021-11-21T19:44:12Z
begin 2021-10-13T00:00:00Z
end 2021-10-20T00:00:00Z
path src/sys
commits 17

date 2021-10-13T13:08:58Z
author bluhm
files src/sys/arch/amd64/amd64/aesni.c log diff annotate
src/sys/arch/amd64/amd64/via.c log diff annotate
src/sys/arch/arm64/arm64/cryptox.c log diff annotate
src/sys/arch/i386/i386/via.c log diff annotate
src/sys/arch/i386/pci/glxsb.c log diff annotate
src/sys/arch/octeon/dev/octcrypto.c log diff annotate
src/sys/crypto/crypto.c log diff annotate
src/sys/crypto/cryptodev.h log diff annotate
src/sys/crypto/cryptosoft.c log diff annotate
src/sys/dev/pci/Attic/hifn7751.c log diff annotate
src/sys/dev/pci/Attic/safe.c log diff annotate
src/sys/dev/pci/Attic/ubsec.c log diff annotate
message The kernel crypto framework sometimes returned an error, sometimes
the callback was called, and sometimes both. So the caller of that
API could not release resources correctly.
A bunch of errors can or should not happen, replace them with an
assert. Remove redundant checks. crypto_invoke() should not return
the error, but pass it via callback.
Some old hardware drivers keep part of their inconsistency as I
cannot test them.
OK mpi@

date 2021-10-13T14:36:31Z
author bluhm
files src/sys/netinet/ip_ah.c log diff annotate
src/sys/netinet/ip_esp.c log diff annotate
src/sys/netinet/ip_ipcomp.c log diff annotate
src/sys/netinet/ip_ipip.c log diff annotate
src/sys/netinet/ip_ipip.h log diff annotate
src/sys/netinet/ip_ipsp.c log diff annotate
src/sys/netinet/ip_ipsp.h log diff annotate
src/sys/netinet/ipsec_output.c log diff annotate
src/sys/netinet/tcp_subr.c log diff annotate
message The function ipip_output() was registered as .xf_output() xform
function. But was is never called via this pointer. It would have
immediatley crashed as mp is always NULL when called via .xf_output().
Do not set .xf_output to ipip_output. This allows to pass only the
parameters which are actually needed and the control flow is clearer.
OK mpi@

date 2021-10-13T22:43:44Z
author bluhm
files src/sys/crypto/crypto.c log diff annotate
src/sys/crypto/cryptodev.h log diff annotate
src/sys/dev/softraid_crypto.c log diff annotate
src/sys/dev/softraid_raid1c.c log diff annotate
src/sys/netinet/ip_ah.c log diff annotate
src/sys/netinet/ip_esp.c log diff annotate
src/sys/netinet/ip_ipcomp.c log diff annotate
src/sys/netinet/ipsec_input.c log diff annotate
src/sys/netinet/ipsec_output.c log diff annotate
message The function crypto_dispatch() never returns an error. Make it
void and remove error handling in the callers.
OK patrick@ mvs@

date 2021-10-13T22:49:11Z
author bluhm
files src/sys/netinet/ipsec_input.c log diff annotate
message Remove redundant NULL checks in IPsec which are never reached.
ok mvs@

date 2021-10-14T08:46:01Z
author mpi
files src/sys/kern/sys_generic.c log diff annotate
message Implement select(2) and pselect(2) on top of kqueue.

The given set of fds are converted to equivalent kevents using EV_SET(2)
and passed to the scanning internals of kevent(2): kqueue_scan(). Those
events are lazily deleted to reduce the overhard of freeing/allocating
them when select(2) is called in a loop.

ktrace(1) will now output the converted kevents on top of the usuals set
bits to be able to find possible error in the convertion.

This switch implies that select(2) and pselect(2) will now query the
underlying kqfilters instead of the *_poll() routines. An increase in
latency is visible, especially with UDP sockets and NET_LOCK()-contended
subsystems and will be addressed in a next step.

The various *_poll() routines could be removed as soon as poll(2) and
ppoll(2) are also converted.

Based on similar work done on DragonFlyBSD with inputs from from visa@,
millert@, anton@, cheloha@, thanks!

ok claudio@, bluhm@

date 2021-10-14T17:39:42Z
author bluhm
files src/sys/netinet6/ip6_forward.c log diff annotate
message ip6_output_ipsec_send() may change the route embeded in struct ro
during path MTU discovery. ip6_forward() has to update its rt
variable to the new route in ro. Otherwise it could operate on a
freed route.
from markus@

date 2021-10-14T23:05:10Z
author mvs
files src/sys/kern/uipc_socket.c log diff annotate
src/sys/kern/uipc_usrreq.c log diff annotate
message Release solock() before call unp_externalize().

A little step forward to make UNIX domain sockets locking fine grained.
The closest goal is to introduce the new rwlock(9) and use it to protect
garbage collector data. This leaves existing `unp_lock' rwlock(9) which
cowers the whole layer for per-socket data only and allows to replace it
with per-socket `so_lock' with further diffs.

Except file descriptor table unp_externalize() operates with the garbage
collector data only such as `unp_rights', `unp_msgcount' directly and
`unp_deferred' through unp_discard(). I want to introduce the new garbage
collector rwlock(9) with the separate diff, so `unp_lock' is still taken
within unp_externalize() around garbage collector data access. But right
now M_WAITOK allocation removed from rwlock(9). Also useless M_WAITOK
allocation and fdplock()/fdpunlock() dances removed from the error path.
The `unp_lock' and fdplock() are not taken together within
unp_externalize() but unp_internalize() still enforces `unp_lock' ->
fdplock() lock order. This rests the only place and will be changed with
the upcoming unp_internalize() and garbage collector rwlock(9) diffs.

ok bluhm@

date 2021-10-15T06:30:06Z
author semarie
files src/sys/kern/spec_vnops.c log diff annotate
src/sys/kern/vfs_default.c log diff annotate
src/sys/kern/vfs_sync.c log diff annotate
src/sys/miscfs/deadfs/dead_vnops.c log diff annotate
src/sys/miscfs/fifofs/fifo_vnops.c log diff annotate
src/sys/ntfs/ntfs_vnops.c log diff annotate
src/sys/sys/vnode.h log diff annotate
src/sys/ufs/mfs/mfs_vnops.c log diff annotate
message vnode: remove vop_generic_{,is,un}lock stub functions

These functions are only stubs (returning 0). Replace them with nullop
function (same behaviour). There is no intented behaviour changes.

While here, reorder some vop_islocked member in structs to be next
others vop_{,un}lock members.

ok visa@

date 2021-10-15T06:59:57Z
author mpi
files src/sys/kern/sys_generic.c log diff annotate
message Revert "Implement select(2) and pselect(2) on top of kqueue."

It introduced a regression exposed by the ssh tests.

Reported by anton@

date 2021-10-15T13:38:10Z
author stsp
files src/sys/dev/pci/if_iwx.c log diff annotate
src/sys/dev/pci/if_iwxvar.h log diff annotate
message Add initial 40MHz support to the iwx(4) driver.

Tested:
ax200: jmc, phessler, kevlo, hrvoje, sdk, fkr, stsp, Mark Patruck
ax201: jcs, stsp, Fredrik Engberg, Eric Auge

date 2021-10-16T17:14:41Z
author kettenis
files src/sys/dev/fdt/bcm2711_pcie.c log diff annotate
message Bail out early if the PCIe controller hasn't been initialized by the
firmware.

ok jsg@

date 2021-10-17T10:59:45Z
author jsg
files src/sys/dev/pci/drm/amd/amdgpu/gmc_v10_0.c log diff annotate
src/sys/dev/pci/drm/amd/amdgpu/gmc_v9_0.c log diff annotate
message drm/amdgpu: fix gart.bo pin_count leak

From Leslie Shi
621ddffb70db824eabd63d18ac635180fe9500f9 in linux 5.10.y/5.10.74
66805763a97f8f7bdf742fc0851d85c02ed9411f in mainline linux

date 2021-10-17T11:39:40Z
author patrick
files src/sys/uvm/uvm_page.c log diff annotate
message km_alloc(9) needs to be passed a size that is a multiple of PAGE_SIZE.

ok mpi@

date 2021-10-19T06:09:39Z
author semarie
files src/sys/miscfs/deadfs/dead_vnops.c log diff annotate
message vnode: deadfs: do not call v_op->vop_lock directly, use VOP_LOCK() wrapper

ok mpi@ visa@ (as part of larger diff)

date 2021-10-19T06:11:45Z
author semarie
files src/sys/isofs/cd9660/cd9660_node.c log diff annotate
src/sys/nfs/nfs_node.c log diff annotate
src/sys/ufs/ufs/ufs_ihash.c log diff annotate
message vnode: do not manipulate vnode lock directly

use VOP_LOCK / VOP_UNLOCK wrappers.

VOP_LOCK() is prefered over vn_lock() here in order to keep equivalent code.

ok mpi@ visa@ (as part of larger diff)

date 2021-10-19T06:26:08Z
author semarie
files src/sys/kern/vfs_subr.c log diff annotate
message vnode: remove VLOCKSWORK and check locking when vop_islocked != nullop

This flag is currently used to mark or unmark a vnode to actively
check vnode locking semantic (when compiled with VFSLCKDEBUG).

Currently, VLOCKSWORK flag isn't properly set for several FS
implementation which have full locking support. This commit enable
proper checking for them too (cd9660, udf, fuse, msdosfs, tmpfs).

Instead of using a particular flag, it directly check if
v_op->vop_islocked is nullop or not to activate or not the vnode
locking checks.

ok mpi@

date 2021-10-19T06:26:09Z
author semarie
files src/sys/kern/vfs_vops.c log diff annotate
src/sys/nfs/nfs_node.c log diff annotate
src/sys/sys/vnode.h log diff annotate
src/sys/ufs/ext2fs/ext2fs_subr.c log diff annotate
src/sys/ufs/ffs/ffs_subr.c log diff annotate
src/sys/ufs/ffs/ffs_vfsops.c log diff annotate
src/sys/uvm/uvm_vnode.c log diff annotate
message vnode: remove VLOCKSWORK and check locking when vop_islocked != nullop

This flag is currently used to mark or unmark a vnode to actively
check vnode locking semantic (when compiled with VFSLCKDEBUG).

Currently, VLOCKSWORK flag isn't properly set for several FS
implementation which have full locking support. This commit enable
proper checking for them too (cd9660, udf, fuse, msdosfs, tmpfs).

Instead of using a particular flag, it directly check if
v_op->vop_islocked is nullop or not to activate or not the vnode
locking checks.

ok mpi@