> So I would ack the patch with a minor change in the commit message. So > instead > of > > > During the module shutdown procedure in batman_exit(), a rcu callback is > > being scheduled (batman_exit -> hardif_remove_interfaces -> > > hardif_remove_interfae -> call_rcu). However, when the kernel unloads > > the module, the rcu callback might not have been executed yet, resulting > > in a "unable to handle kernel paging request" in __rcu_process_callback > > afterwards, causing the kernel to freeze. > > Therefore, we should always flush all rcu callback functions scheduled > > during the shutdown procedure. > > something like > > > During the module shutdown procedure in batman_exit(), a rcu callback is > > > > > > being scheduled (batman_exit -> hardif_remove_interfaces -> > > > > > > hardif_remove_interfae -> call_rcu). However, when the kernel unloads > > > > > > the module, the rcu callback might not have been executed yet, resulting > > > > > > in a "unable to handle kernel paging request" in __rcu_process_callback > > > > > > afterwards, causing the kernel to freeze. > > > > > > > > > The synchronize_net and synchronize_rcu in mesh_free are currently > > > > > > called before the call_rcu in hardif_remove_interface and have no real > > > > > > effect on it. > > > > > > > > > Therefore, we should always flush all rcu callback functions scheduled > > > > > > during the shutdown procedure using synchronize_net. The call to > > > > > > synchronize_rcu can be omitted because synchronize_net already calls it.
Yep, sounds good :). Thanks for reviewing and the info about synchronize_net. Cheers, Linus > > thanks, > Sven
