⬢ DragonFlyBSD Kernel Audit
DF-5643 / run_c_fixed.log
← back to finding ↓ download raw
=== DF-5643 RUN C' (FIXED kernel): parked waiter on a LIVE softc ===
ctl: grab -> ioctl ok, ret=0
ctl: park -> ioctl ok, ret=1
ctl: veto -> ioctl ok, ret=16
ctl: relfree -> ioctl ok, ret=0
ctl: wakuaf -> ioctl ok, ret=1
[df5642] PARK: waiter started=1 done=0 (parked on softc=0xfffff8008d382380)
[df5642] VETO: pre-detach owner=0xfffff801175dd280 (must be non-NULL)
[df5642] VETO: device_detach(smbus0)=16 (vetoed: GOOD)
[df5642] VETO: post-detach softc=0xfffff8008d382380 (NULL = freed under the owner)
[df5642] RELFREE: calling smbus_release_bus(smbus0, fakesmbb0) with softc=0xfffff8008d382380 ...
[df5642] RELFREE: returned 0
[df5642] WAKUAF: done=1; wakeup(freed sc=0xfffff8008d382380)
[df5642] WAKUAF: after wakeup: done=1 error=0 (done=0 -> waiter re-parked on FREED softc)

# On the fixed kernel the softc address before/after the (vetoed) detach is
# IDENTICAL and non-NULL (0xfffff8008d382380): the waiter parked on a LIVE
# softc, the detach was refused with EBUSY, the owner released cleanly
# (whose wakeup(sc) woke the waiter), and the waiter's request completed
# with error=0 on the live softc -- correct grant semantics.
# Baseline (run_c.log): the same waiter resumed on the FREED softc
# ("PARK-T: request RETURNED 0 (post-free resume)") after
# "VETO: device_detach=0 <<< BUS DETACHED UNDER ITS OWNER".