[Bug 279195] kernel panic while re-configuring if_vlan(4) vlan id
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 279195] kernel panic while re-configuring if_vlan(4) vlan id"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 21 May 2024 08:34:19 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=279195
Kristof Provost <kp@freebsd.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kp@freebsd.org
--- Comment #2 from Kristof Provost <kp@freebsd.org> ---
Yeah, that seems to need this:
diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c
index b69d8107e30d..b936d4673404 100644
--- a/sys/net/if_vlan.c
+++ b/sys/net/if_vlan.c
@@ -1715,10 +1715,17 @@ vlan_config(struct ifvlan *ifv, struct ifnet *p,
uint16_t vid,
ifv->ifv_proto = proto;
if (ifv->ifv_vid != vid) {
+ int oldvid = ifv->ifv_vid;
+
/* Re-hash */
vlan_remhash(trunk, ifv);
ifv->ifv_vid = vid;
error = vlan_inshash(trunk, ifv);
+ if (error) {
+ ifv->ifv_vid = oldvid;
+ /* Re-insert back where we found it. */
+ vlan_inshash(trunk, ifv);
+ }
}
/* Will unlock */
goto done;
After # ifconfig vlan0 vlan 110 you'll see that vlan0 thinks it's on 111, so
when it tries to vlan_remhash() it's not where it expects to find it.
There may be a similar problem in the case where we don't yet have a vlandev.
--
You are receiving this mail because:
You are the assignee for the bug.