From: Mathieu Desnoyers Date: Fri, 7 Sep 2018 21:55:32 +0000 (-0400) Subject: Fix: out of memory error handling X-Git-Tag: v2.12.0-pre~118 X-Git-Url: http://git.lttng.org/?p=lttng-modules.git;a=commitdiff_plain;h=5f14d8ae2cc0734b007c8770c3b13ff00d830040 Fix: out of memory error handling 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 --- diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c index 54c62a99..9d199e51 100644 --- a/lib/ringbuffer/ring_buffer_backend.c +++ b/lib/ringbuffer/ring_buffer_backend.c @@ -455,9 +455,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();