Fix: out of memory error handling
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 7 Sep 2018 21:55:32 +0000 (17:55 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 7 Sep 2018 21:58:32 +0000 (17:58 -0400)
CPU hotplug handles teardown on failure to complete adding an instance
of CPU hotplug. Trying to remove after a failed "add" on that instance
triggers a NULL pointer dereference OOPS.

Fixes: #1167
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lib/ringbuffer/ring_buffer_backend.c

index 3efa1d12ecb6bc6cffc12ffadd321934a55d95de..7394c86033d24c1f97ff03b80767381e2fabf2b5 100644 (file)
@@ -468,9 +468,11 @@ int channel_backend_init(struct channel_backend *chanb,
 free_bufs:
        if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
-               ret = cpuhp_state_remove_instance(lttng_rb_hp_prepare,
-                               &chanb->cpuhp_prepare.node);
-               WARN_ON(ret);
+               /*
+                * Teardown of lttng_rb_hp_prepare instance
+                * on "add" error is handled within cpu hotplug,
+                * no teardown to do from the caller.
+                */
 #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
 #ifdef CONFIG_HOTPLUG_CPU
                put_online_cpus();
This page took 0.026401 seconds and 4 git commands to generate.