unfortunately ypbind's daemon() call happens after it has done network
binding to interlock parent exit to stall /etc/rc, so it would need to
carry pledge "proc" during network speaking. proposed by jmatthew. i also
forgot pledge cpath and flock.
Instead of holding "proc", I've used a pipe[] and fork() early on to
interlock the parent until the child has a binding, and closes the pipe.
ok jmatthew, who tested
set ifp->if_link_state to LINK_STATE_DOWN in attach.
aq doesn't complete packet transmission if the link is down, so
aq_start uses LINK_STATE_IS_UP(ifp->if_link_state) to decide if it
should drop the queued packets or actually put them on the ring.
however, LINK_STATE_IS_UP() returns true if the link state is
LINK_STATE_UNKNOWN, which is the default value for the link state
in struct ifnet (because it's 0). this means if aq(4) is booted
without being plugged into the network, the link state handler
doesnt run and change the state to UP or DOWN, which leaves it
UNKNOWN. that's enough to confuse aq_start though.
defaulting the state to down properly represents the state of the
link, which in turn makes aq_start do the right thing with the
packets. if the network is plugged in on boot, the phy layer notices
and moves it to UP as expected.
found by Paul de Weerd on bugs@
[2 lines not shown]
Add RX queues/RSS/TSO support and update microcode for RTL8127.
On the RTL8127, the RX and TX descriptors use the 16-byte format
instead of the 32-byte one.
Fix TLV handling which lacks the check length checks for padding.
This could out-of-bounds memory write, stack disclosure, and SIGSEGV.
Reported and fix provided by Franz Bettag
For tree mode, hold a reference to prompt and other bits across command
to avoid crashing when killing the session with the mode's pane. GitHub
issue 5728.
avoid setting BUS_DMA_64BIT on 32-bit limited hardware and sparc64
On sparc64 the IOMMU is bypassed when the BUS_DMA_64BIT flag is set.
With addresses having the high bit set, which requires support for full
64-bit addresses even if the memory is physically located below 4G.
Initial patch from Ted Bullock. Feedback and ok on an earlier diff
from kettenis@
Ted reports this avoids:
[drm] *ERROR* radeon: ring test failed (scratch(0x15E4)=0xCAFEDEAD)
on a sparc64 machine with an XVR-100.