From 5f14d8ae2cc0734b007c8770c3b13ff00d830040 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Fri, 7 Sep 2018 17:55:32 -0400 Subject: [PATCH] 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 --- lib/ringbuffer/ring_buffer_backend.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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(); -- 2.34.1