OpenBSD cvs log

created 2019-02-09T16:12:03Z
begin 2019-02-07T00:00:00Z
end 2019-02-08T00:00:00Z
path src/sys
commits 3

date 2019-02-07T07:38:33Z
author patrick
files src/sys/dev/ic/bwfm.c log diff annotate
message There's a task ring for executing commands in a sleep-safe context.
This task is used to deliver mbufs (for events, not data), but it's
possible that the queue overruns. In that case it does leak mbufs.
For now, assert the size to see if we hit the issue.

date 2019-02-07T07:39:56Z
author patrick
files src/sys/dev/ic/bwfm.c log diff annotate
src/sys/dev/pci/if_bwfm_pci.c log diff annotate
src/sys/dev/sdmmc/if_bwfm_sdio.c log diff annotate
message Consistently use m_freem(9). This fixes possible leaks in a few
error cases.

date 2019-02-07T15:11:38Z
author visa
files src/sys/kern/subr_witness.c log diff annotate
src/sys/sys/malloc.h log diff annotate
src/sys/sys/sysctl.h log diff annotate
message Add lock stack trace saving for witness(4).

This lets witness(4) save a stack trace on each lock acquisition.
The saved traces can be viewed in ddb(4) when showing the currently
held locks, which may help when debugging incorrect locking.

Sample output:

ddb{0}> show all locks
Process 63836 (rm) thread 0xffff8000221e52c8 (435004)
exclusive rrwlock inode r = 0 (0xfffffd8119a092c0) locked @ /usr/src/sys/ufs/ufs/ufs_vnops.c:1547
#0 witness_lock+0x419
#1 _rw_enter+0x2bb
#2 _rrw_enter+0x42
#3 VOP_LOCK+0x3f
#4 vn_lock+0x36
#5 vfs_lookup+0xa1
#6 namei+0x2b3
#7 dounlinkat+0x85
#8 syscall+0x338
#9 Xsyscall+0x128
exclusive kernel_lock &kernel_lock r = 1 (0xffffffff81e6a5f0) locked @ /usr/src/sys/arch/amd64/amd64/intr.c:525
#0 witness_lock+0x419
#1 syscall+0x2b6
#2 Xsyscall+0x128

The saving adds overhead, so it is not enabled by default. It can be
taken into use by setting sysctl kern.witness.locktrace=1 at runtime
or by defining WITNESS_LOCKTRACE in the kernel configuration.

Feedback and OK anton@