DF-3906 / fix.diff
--- a/sys/dev/netif/xl/if_xl.c 2026-09-16 22:58:01.972006667 +0000 +++ b4/sys/dev/netif/xl/if_xl.c 2026-09-16 22:58:44.679456864 +0000 @@ -2374,7 +2374,16 @@ { struct xl_softc *sc = xsc; - lwkt_serialize_enter(sc->arpcom.ac_if.if_serializer); + if (!lwkt_serialize_try(sc->arpcom.ac_if.if_serializer)) { + /* + * Never park the softclock thread on the serializer: + * xl_stop() tears this callout down with the synchronous + * callout_stop() while holding the same serializer + * (if_xl.c:3169) -> AB-BA deadlock. Retry next tick. + */ + callout_reset(&sc->xl_stat_timer, 1, xl_stats_update, sc); + return; + } xl_stats_update_serialized(xsc); lwkt_serialize_exit(sc->arpcom.ac_if.if_serializer); } |