svn commit: r341359 - head/sys/netpfil/pf

Kristof Provost kp at FreeBSD.org
Sat Dec 1 09:58:22 UTC 2018


Author: kp
Date: Sat Dec  1 09:58:21 2018
New Revision: 341359
URL: https://svnweb.freebsd.org/changeset/base/341359

Log:
  pf: Fix panic on overlapping interface names
  
  In rare situations[*] it's possible for two different interfaces to have
  the same name. This confuses pf, because kifs are indexed by name (which
  is assumed to be unique). As a result we can end up trying to
  if_rele(NULL), which panics.
  
  Explicitly checking the ifp pointer before if_rele() prevents the panic.
  Note pf will likely behave in unexpected ways on the the overlapping
  interfaces.
  
  [*] Insert an interface in a vnet jail. Rename it to an interface which
  exists on the host. Remove the jail. There are now two interfaces with
  the same name in the host.

Modified:
  head/sys/netpfil/pf/pf_if.c

Modified: head/sys/netpfil/pf/pf_if.c
==============================================================================
--- head/sys/netpfil/pf/pf_if.c	Sat Dec  1 09:57:29 2018	(r341358)
+++ head/sys/netpfil/pf/pf_if.c	Sat Dec  1 09:58:21 2018	(r341359)
@@ -853,7 +853,8 @@ pfi_detach_ifnet_event(void *arg __unused, struct ifne
 	V_pfi_update++;
 	pfi_kif_update(kif);
 
-	if_rele(kif->pfik_ifp);
+	if (kif->pfik_ifp)
+		if_rele(kif->pfik_ifp);
 
 	kif->pfik_ifp = NULL;
 	ifp->if_pf_kif = NULL;


More information about the svn-src-all mailing list