Gabriele Monaco <[email protected]> writes: > HA monitors may start timers, all cleanup functions currently stop the > timers asynchronously to avoid sleeping in the wrong context. > Nothing makes sure running callbacks terminate on cleanup. > > Run the entire HA timer callback in an RCU read-side critical section, > this way we can simply synchronize_rcu() with any pending timer and are > sure any cleanup using kfree_rcu() runs after callbacks terminated. > Additionally make sure any unlikely callback running late won't run any > code if the monitor is marked as disabled or if destruction started. > Use memory barriers to serialise with racing resets. > > Fixes: f5587d1b6ec9 ("rv: Add Hybrid Automata monitor type") > Fixes: 4a24127bd6cb ("rv: Add support for per-object monitors in DA/HA") > Signed-off-by: Gabriele Monaco <[email protected]>
Reviewed-by: Nam Cao <[email protected]>
