⬢ DragonFlyBSD Kernel Audit
DF-5763 / fix.diff
← back to finding ↓ download raw
--- a/sys/netbt/bt_proto.c
+++ b/sys/netbt/bt_proto.c
@@ -160,7 +160,15 @@
 	.dom_name = "bluetooth",
 	.dom_init = netbt_init,
 	.dom_externalize = NULL,
-	.dom_dispose = netbt_dispose,
+	/*
+	 * DragonFly's dom_dispose is the per-socket PR_RIGHTS mbuf
+	 * disposal hook (sys/kern/uipc_socket.c:1611,1987), invoked on
+	 * every sorflush / receive-cleanup of a PR_RIGHTS socket -- it is
+	 * NOT a domain-teardown hook.  netbt_dispose() destroys the
+	 * global vm_zones (and would re-destroy them on every flush);
+	 * no netbt protosw sets PR_RIGHTS, so the hook must stay NULL.
+	 */
+	.dom_dispose = NULL,
 	.dom_protosw = btsw,
 	.dom_protoswNPROTOSW = &btsw[NELEM(btsw)],
 	.dom_next = SLIST_ENTRY_INITIALIZER,