HomeFreeBSD

MFC r292254:

Description

MFC r292254:

Properly drain callouts in the IPFW subsystem to avoid use after free
panics when unloading the dummynet and IPFW modules:

  • The callout drain function can sleep and should not be called having

a non-sleepable lock locked. Remove locks around "ipfw_dyn_uninit(0)".

  • Add a new "dn_gone" variable to prevent asynchronous restart of

dummynet callouts when unloading the dummynet kernel module.

  • Call "dn_reschedule()" locked so that "dn_gone" can be set and

checked atomically with regard to starting a new callout.

PR: 208171
Requested by: Franco Fichtner (opnsense.org)
Differential Revision: https://reviews.freebsd.org/D3855