From 76e147d0a937d6df65491cc5c559c13d38b82d83 Mon Sep 17 00:00:00 2001 From: Justin Husted Date: Thu, 7 Nov 2019 16:44:04 -0800 Subject: Fix refcount bug in blkdev and timer kthreads. The shutdown code in d79d57e and b20e160 had a race condition during shutdown, due to not owning a reference on the associated task_struct while the associated threads shut themselves down. Patch over this by taking an appropriate reference. Signed-off-by: Justin Husted --- linux/timer.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'linux/timer.c') diff --git a/linux/timer.c b/linux/timer.c index 11a2fd8d..eb937863 100644 --- a/linux/timer.c +++ b/linux/timer.c @@ -312,6 +312,8 @@ static void timers_init(void) __attribute__((destructor(103))) static void timers_cleanup(void) { + get_task_struct(timer_task); + pthread_mutex_lock(&timer_lock); timer_thread_stop = true; pthread_cond_signal(&timer_cond); @@ -320,5 +322,6 @@ static void timers_cleanup(void) int ret = kthread_stop(timer_task); BUG_ON(ret); + put_task_struct(timer_task); timer_task = NULL; } -- cgit v1.2.3