[Bug 279653] Page fault in in6_selecthlim
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Jun 2024 03:07:26 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=279653 --- Comment #12 from takahiro.kurosawa@gmail.com --- I have not reproduced the crash but I guess the following patch for if_detach_internal() would fix the problem: ---- --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1235,6 +1235,8 @@ if_detach_internal(struct ifnet *ifp, bool vmove) #ifdef VIMAGE finish_vnet_shutdown: #endif + epoch_wait_preempt(net_epoch_preempt); + NET_EPOCH_DRAIN_CALLBACKS(); /* * We cannot hold the lock over dom_ifdetach calls as they might * sleep, for example trying to drain a callout, thus open up the ---- The routing entries that are related with the detaching ifnet are removed in if_purgeaddrs() and rt_flushifroutes(). It seems that the transport layer protects itself from freeing objects with NET_EPOCH_ENTER/EXIT. So there should be no threads that still reference nhop_objects related to the ifnet after rt_flushifroutes() + epoch_wait_preempt(). I am not sure that NET_EPOCH_DRAIN_CALLBACKS() is required but it is probably harmless. -- You are receiving this mail because: You are the assignee for the bug.