[Bug 286179] Passing a vlan interface to a vnet jail result in a stuck dying state
| Newsgroups | gmane.os.freebsd.devel.net |
|---|---|
| Message-ID | <[email protected]/bugzilla/> |
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=286179 --- Comment #22 from Zhenlei Huang <[email protected]> --- (In reply to Peter Ganzhorn from comment #21) CURVNET_SET() and / CURVNET_RESTORE() manipulate the current thread's vnet, aka `curthread->td_vnet`. Typically vnet aware components want this pair to work correctly, as the current thread may run with different vnets. For drivers those utilize iflib(4), iflib_rxeof() / _task_fn_rx() runs with dedicated taskq threads, see https://cgit.freebsd.org/src/tree/sys/net/iflib.c#n545 . So a leaking `CURVNET_RESTORE()` shall not make any differences, given other components say zfs / nfs have their own thread context. The following if_input() in iflib.c looks suspicious to me. I expect the CURVNET_RESTORE() run too early. Well this should be another issue. ``` CURVNET_RESTORE(); /* make sure that we can refill faster than drain */ for (i = 0, fl = &rxq->ifr_fl[0]; i < sctx->isc_nfl; i++, fl++) retval |= iflib_fl_refill_all(ctx, fl); if (mh != NULL) { if_input(ifp, mh); DBG_COUNTER_INC(rx_if_input); } ``` -- You are receiving this mail because: You are on the CC list for the bug.