[Bug 286179] Passing a vlan interface to a vnet jail result in a stuck dying state

[email protected]
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.