The unload_page callback expects the return value of load_page() as its
argument: ret = load_page(va); unload(ret). Fix the rollback code in
simple_ring_buffer_init_mm() where the descriptor's VA is used instead
of the loaded page address.

Fixes: 635923081c79 ("tracing: load/unload page callbacks for 
simple_ring_buffer")
Signed-off-by: Vincent Donnefort <[email protected]>

diff --git a/kernel/trace/simple_ring_buffer.c 
b/kernel/trace/simple_ring_buffer.c
index 02af2297ae5a..38cf9abe0be8 100644
--- a/kernel/trace/simple_ring_buffer.c
+++ b/kernel/trace/simple_ring_buffer.c
@@ -431,7 +431,7 @@ int simple_ring_buffer_init_mm(struct simple_rb_per_cpu 
*cpu_buffer,
 
        if (ret) {
                for (i--; i >= 0; i--)
-                       unload_page((void *)desc->page_va[i]);
+                       unload_page(bpages[i].page);
                unload_page(cpu_buffer->meta);
 
                return ret;

base-commit: 5d6919055dec134de3c40167a490f33c74c12581
-- 
2.54.0.563.g4f69b47b94-goog


Reply via email to