HomeFreeBSD

bridge: call member interface ioctl() without NET_EPOCH

Description

bridge: call member interface ioctl() without NET_EPOCH

We're not allowed to hold NET_EPOCH while sleeping, so when we call ioctl()
handlers for member interfaces we cannot be in NET_EPOCH. We still need some
protection of our CK_LISTs, so hold BRIDGE_LOCK instead.

That requires changing BRIDGE_LOCK into a sleepable lock, and separating the
BRIDGE_RT_LOCK, to protect bridge_rtnode lists. That lock is taken in the data
path (while in NET_EPOCH), so it cannot be a sleepable lock.

While here document the locking strategy.

MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D26418

Details

Provenance
kpAuthored on
Differential Revision
D26418: bridge: Call member interface ioctl() without NET_EPOCH
Parents
rS366499: MFC r366394
Branches
Unknown
Tags
Unknown