Currently, the following steps will lead to an uma panic:
kldload if_bridge ifconfig bridge0 create ifconfig bridge0 addm wlan0 addm em0 up dhclient em0 kldunload if_bridge
Because bridge_rtnode_zone has outstanding allocations at the time of destruction.
Fix this by explicitly destroying the bridge interfaces at UNINIT. I chose to (attempt) to virtualize the uma zone these allocations come from to simplify things -- trying to reason through how best to destroy the uma zone once all of the bridges were cleaned up across all of the vnets gave me a bit of a headache. I am not completely sure how successful I was, but it looked at a glance like all of the bridge_rt* functions are called in a proper vnet context such that I didn't need to CURVNET_SET (ioctl handlers, IIRC).
Additionally, bridge_rtable_fini now flushes out the routing table to free the memory referenced in the initial panic.
I would maybe avoid making other changes for this commit than just the "Set to" part. Losing the Xr sections for bc and dc seems rather odd.
Granted, I would rewrite this description to be something like "Use the traditional FreeBSD versions of bc(1) and dc(1) rather than the <foo> versions." where <foo> is more descriptive than just "enhanced".