$OpenBSD: patch-source_vmnet_if_hubmod_c,v 1.3 2007/05/31 20:31:36 aanriot Exp $
--- source/vmnet/if_hubmod.c.orig	Sun Mar 14 14:58:51 2004
+++ source/vmnet/if_hubmod.c	Wed May 30 23:02:25 2007
@@ -399,7 +399,6 @@ port_mappoll(struct hubport_softc *portsc, vaddr_t uad
 	kpage = uvm_km_valloc_wait(kernel_map, PAGE_SIZE);
 	kaddr = kpage + off;
 
-	PHOLD(CURLWP);
 	error = uvm_vslock(curproc, (void *)upage, PAGE_SIZE,
 	    VM_PROT_READ|VM_PROT_WRITE);
 	if (error)
@@ -411,14 +410,12 @@ port_mappoll(struct hubport_softc *portsc, vaddr_t uad
 #if 1
 	pmap_update(pmap_kernel());
 #endif
-	PRELE(CURLWP);
 	portsc->port_kpollpage = kpage;
 	portsc->port_upollpage = upage;
 	portsc->port_pollptr = (u_int32_t *)kaddr;
 	return 0;
 
     err:
-	PRELE(CURLWP);
 	uvm_km_free_wakeup(kernel_map, kpage, PAGE_SIZE);
 	return (error);
 }
@@ -431,9 +428,7 @@ port_unmappoll(struct hubport_softc *portsc)
 	pmap_update(pmap_kernel());
 #endif
 	uvm_km_free_wakeup(kernel_map, portsc->port_kpollpage, PAGE_SIZE);
-	PHOLD(CURLWP);
 	uvm_vsunlock(curproc, (void *)portsc->port_upollpage, PAGE_SIZE);
-	PRELE(CURLWP);
 	portsc->port_pollptr = NULL;
 	portsc->port_kpollpage = 0;
 	portsc->port_upollpage = 0;
@@ -604,6 +599,7 @@ hub_fake_clonedev(dev_t dev, int flag, struct proc *p)
 #endif
 
 	p->p_dupfd = fd;
+	p->p_descfd = p->p_dupfd;	/* XXX */
 
 	return ENXIO;
 }
@@ -651,7 +647,7 @@ hub_sendchain(struct hubport_softc *portsc, struct mbu
 			 */
 #if NBPFILTER > 0
 			if (ifp2->if_bpf)
-				bpf_mtap(ifp2->if_bpf, m2);
+				bpf_mtap(ifp2->if_bpf, m2, BPF_DIRECTION_OUT);
 #endif
 			s = splnet();
 			drops1 = ifp2->if_snd.ifq_drops;
@@ -732,7 +728,7 @@ hub_ifstart(struct ifnet *ifp)
 	hub_sendchain(portsc, m);
 #if NBPFILTER > 0
 	if (ifp->if_bpf)
-		bpf_mtap(ifp->if_bpf, m);
+		bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_OUT);
 #endif
 	m_freem(m);
 
