git: 03ef737c544d - main - ng_eiface: switch VNETs when injecting mbufs into netgraph
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 23 Sep 2023 09:24:21 UTC
The branch main has been updated by zec:
URL: https://cgit.FreeBSD.org/src/commit/?id=03ef737c544d3dd90a0000c18382db99ccf2ee9a
commit 03ef737c544d3dd90a0000c18382db99ccf2ee9a
Author: Marko Zec <zec@FreeBSD.org>
AuthorDate: 2023-09-23 08:56:56 +0000
Commit: Marko Zec <zec@FreeBSD.org>
CommitDate: 2023-09-23 08:56:56 +0000
ng_eiface: switch VNETs when injecting mbufs into netgraph
A ng_eiface instance may be on lease to a different vnet while
remaining tied to its parent vnet. In such circumstances, before
injecting mbufs into netgraph, curvnet must be set to that of the
ng_eiface's netgraph node. Mark the vnet transition as QUIET,
since otherwise it would be recorded as a curvnet recursion when
ng_eiface's ifnet resides in the same (parent) vnet as its
netgraph node.
PR: 274028
Reported by: Dancho Penev <dpslavov@hotmail.com>
MFC after: 1 week
---
sys/netgraph/ng_eiface.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sys/netgraph/ng_eiface.c b/sys/netgraph/ng_eiface.c
index 40b1a1128de8..a35650f15edd 100644
--- a/sys/netgraph/ng_eiface.c
+++ b/sys/netgraph/ng_eiface.c
@@ -257,7 +257,9 @@ ng_eiface_start2(node_p node, hook_p hook, void *arg1, int arg2)
* freed.
*/
NG_OUTBOUND_THREAD_REF();
+ CURVNET_SET_QUIET(priv->node->nd_vnet);
NG_SEND_DATA_ONLY(error, priv->ether, m);
+ CURVNET_RESTORE();
NG_OUTBOUND_THREAD_UNREF();
/* Update stats */