Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Oct 2018 17:32:31 +0000 (UTC)
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r339690 - stable/12/sys/net
Message-ID:  <201810241732.w9OHWVbH097591@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kp
Date: Wed Oct 24 17:32:31 2018
New Revision: 339690
URL: https://svnweb.freebsd.org/changeset/base/339690

Log:
  MFC r339547:
  
  vlan: Fix panic with lagg and vlan
  
  vlan_lladdr_fn() is called from taskqueue, which means there's no vnet context
  set. We can end up trying to send ARP messages (through the iflladdr_event
  event), which requires a vnet context.
  
  PR:		227654
  Approved by:	re (kib)

Modified:
  stable/12/sys/net/if_vlan.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/net/if_vlan.c
==============================================================================
--- stable/12/sys/net/if_vlan.c	Wed Oct 24 17:09:20 2018	(r339689)
+++ stable/12/sys/net/if_vlan.c	Wed Oct 24 17:32:31 2018	(r339690)
@@ -1302,8 +1302,13 @@ vlan_lladdr_fn(void *arg, int pending __unused)
 
 	ifv = (struct ifvlan *)arg;
 	ifp = ifv->ifv_ifp;
+
+	CURVNET_SET(ifp->if_vnet);
+
 	/* The ifv_ifp already has the lladdr copied in. */
 	if_setlladdr(ifp, IF_LLADDR(ifp), ifp->if_addrlen);
+
+	CURVNET_RESTORE();
 }
 
 static int



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201810241732.w9OHWVbH097591>