OpenBSD cvs log

created 2020-04-25T17:49:23Z
begin 2020-04-12T00:00:00Z
end 2020-04-13T00:00:00Z
path src/sys
commits 11

date 2020-04-12T06:48:46Z
author visa
files src/sys/net/if_bridge.c log diff annotate
message ifpromisc() requires NET_LOCK(), so acquire the lock when changing
promiscuous mode from bridge(4). This fixes a regression of r1.332
of sys/net/if_bridge.c.

splassert with bridge(4) and vlan(4) reported by David Hill

OK mpi@, dlg@

date 2020-04-12T06:56:37Z
author dlg
files src/sys/net/if_tpmr.c log diff annotate
message take NET_LOCK in tpmr_clone_destroy() before calling tpmr_p_dtor()

tpmr_p_dtor() calls ifpromisc(), and ifpromisc() callers need to
be holding NET_LOCK to make changes to if_flags and if_pcount, and
before calling the interfaces ioctl to apply the flag change.

found by hrvoje popovski who was testing tpmr with vlan interfaces.
vlan(4) asserts that the net lock is held in it's ioctl path, which
started this whole bug hunt.

ok visa@ (who came up with a similar diff, which hrvoje tested)

date 2020-04-12T06:59:54Z
author dlg
files src/sys/net/if_aggr.c log diff annotate
message take NET_LOCK in aggr_clone_destroy() before calling aggr_p_dtor()

aggr_p_dtor() calls ifpromisc(), and ifpromisc() callers need to
be holding NET_LOCK to make changes to if_flags and if_pcount, and
before calling the interfaces ioctl to apply the flag change.

i found this while reading code with my eyes, and was able to trigger
the NET_ASSERT_LOCKED in the vlan_ioctl path.

ok visa@

date 2020-04-12T07:02:43Z
author dlg
files src/sys/net/if_var.h log diff annotate
message say if_pcount needs NET_LOCK instead of the kernel lock.

if_pcount is only touched in ifpromisc(), and ifpromisc() needs
NET_LOCK anyway because it also modifies if_flags.

suggested by mpi@
ok visa@

date 2020-04-12T07:04:03Z
author dlg
files src/sys/net/if.c log diff annotate
message make ifpromisc assert that the caller is holding the NET_LOCK.

it needs NET_LOCK because it modifies if_flags and if_pcount.

ok visa@

date 2020-04-12T07:20:33Z
author visa
files src/sys/sys/smr.h log diff annotate
message Mention tail queue in comments.

date 2020-04-12T09:21:19Z
author kettenis
files src/sys/arch/amd64/amd64/acpi_machdep.c log diff annotate
src/sys/arch/arm64/arm64/acpi_machdep.c log diff annotate
src/sys/arch/i386/i386/acpi_machdep.c log diff annotate
src/sys/dev/acpi/acpi.c log diff annotate
src/sys/dev/acpi/acpivar.h log diff annotate
message Add support for the _CCA method. This method indicates whether DMA is
cache-coherent or not. To implement this, acpi(4) gets two bus_dma tags
and passes the appropriate one when attaching devices based on _CCA.
On i386/amd64, where for all practical purpose DMA is always cache-coherent,
the two tags are the same. But on arm64 they are distinct.

ok patrick@

date 2020-04-12T11:56:52Z
author mpi
files src/sys/net/if_gre.c log diff annotate
src/sys/net/if_pfsync.c log diff annotate
src/sys/net/if_tun.c log diff annotate
src/sys/net/if_vxlan.c log diff annotate
src/sys/net/pf_ioctl.c log diff annotate
src/sys/netinet/ip_input.c log diff annotate
message Stop processing packets under non-exclusive (read) netlock.

Prevent concurrency in the socket layer which is not ready for that.

Two recent data corruptions in pfsync(4) and the socket layer pointed
out that, at least, tun(4) was incorrectly using NET_RUNLOCK(). Until
we find a way in software to avoid future mistakes and to make sure that
only the softnet thread and some ioctls are safe to use a read version
of the lock, put everything back to the exclusive version.

ok stsp@, visa@

date 2020-04-12T11:56:53Z
author mpi
files src/sys/netinet6/ip6_input.c log diff annotate
message Stop processing packets under non-exclusive (read) netlock.

Prevent concurrency in the socket layer which is not ready for that.

Two recent data corruptions in pfsync(4) and the socket layer pointed
out that, at least, tun(4) was incorrectly using NET_RUNLOCK(). Until
we find a way in software to avoid future mistakes and to make sure that
only the softnet thread and some ioctls are safe to use a read version
of the lock, put everything back to the exclusive version.

ok stsp@, visa@

date 2020-04-12T16:15:18Z
author anton
files src/sys/kern/uipc_socket.c log diff annotate
message In sosplice(), temporarily release the socket lock before calling
FRELE() as the last reference could be dropped which in turn will cause
soclose() to be called where the socket lock is unconditionally
acquired. Note that this is only a problem for sockets protected by the
non-recursive NET_LOCK() right now.

ok mpi@ visa@

Reported-by: [email protected]

date 2020-04-12T17:47:25Z
author jca
files src/sys/dev/pci/drm/include/linux/seqlock.h log diff annotate
src/sys/dev/pci/drm/include/linux/spinlock.h log diff annotate
message Turn those spinlock and seqlock inline functions to macros

They're macros on Linux because they save state in their flags
parameter. Turning them to static inline functions creates a lot
of -Wuninitialized warnings, so just use macros which set their flags
argument.

ok kettenis@