From 4d5b3fc228780ef2ad2e4758afe56740cc59e82d Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Thu, 18 Jun 2015 13:45:01 +0200 Subject: kern: fix error handling This avoids calling `thread_deallocate' with an uninitialized value, as found by the Clang Static Analyzer. * kern/thread.c (kernel_thread): Fix error handling. --- kern/thread.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'kern') diff --git a/kern/thread.c b/kern/thread.c index 8b1e9f5..1f47553 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -1667,9 +1667,13 @@ thread_t kernel_thread( continuation_t start, void * arg) { + kern_return_t kr; thread_t thread; - (void) thread_create(task, &thread); + kr = thread_create(task, &thread); + if (kr != KERN_SUCCESS) + return THREAD_NULL; + /* release "extra" ref that thread_create gave us */ thread_deallocate(thread); thread_start(thread, start); -- cgit v1.2.3