From 1f7e5bde38a9b37b51db72450b429b790f2feaa8 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Mon, 12 Dec 2016 11:42:28 +0100 Subject: [PATCH] kernel: Fix NULL dereference in ThreadTimeUserTimer::Schedule(). The SpinLocker was always initialized to fThread->time_lock even though fThread may be NULL. This looks like a simple oversight as the rest of the method handles fThread being NULL and the team variants of these timers have very similar logic and do the NULL check as well. This fixes the last remaining KDL in the posixtestsuite. --- src/system/kernel/UserTimer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/system/kernel/UserTimer.cpp b/src/system/kernel/UserTimer.cpp index 8f1514e3f5..9cb843b158 100644 --- a/src/system/kernel/UserTimer.cpp +++ b/src/system/kernel/UserTimer.cpp @@ -903,7 +903,7 @@ ThreadTimeUserTimer::Schedule(bigtime_t nextTime, bigtime_t interval, uint32 flags, bigtime_t& _oldRemainingTime, bigtime_t& _oldInterval) { InterruptsWriteSequentialLocker locker(sUserTimerLock); - SpinLocker timeLocker(fThread->time_lock); + SpinLocker timeLocker(fThread != NULL ? &fThread->time_lock : NULL); // get the current time, but only if needed bool nowValid = fThread != NULL;