This ensures that any RCU readers traversing the instance list
have finished, before releasing the reference on the tracer that
the instance points to.

Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Crystal Wood <[email protected]>
---
 kernel/trace/trace_osnoise.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
index 5e83c4f6f2b4..0e1265acd1cc 100644
--- a/kernel/trace/trace_osnoise.c
+++ b/kernel/trace/trace_osnoise.c
@@ -179,7 +179,9 @@ static void osnoise_unregister_instance(struct trace_array 
*tr)
        if (!found)
                return;
 
-       kvfree_rcu_mightsleep(inst);
+       /* Do a full sync to ensure that tr remains valid, not just inst */
+       synchronize_rcu();
+       kvfree(inst);
 }
 
 /*
-- 
2.54.0


Reply via email to