From 7e61205294ad72507720278c931a573f9c2c16b6 Mon Sep 17 00:00:00 2001 From: Mahmoud Al-Qudsi Date: Sat, 30 May 2020 16:05:29 -0500 Subject: [PATCH] Make sure p->last_jiffies doesn't change after sanity checking See 821525e5032bf56912ecce5f2aa650c57ea89ea2 and #7066 --- src/builtin_jobs.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/builtin_jobs.cpp b/src/builtin_jobs.cpp index 1dd0a16c2..111887d08 100644 --- a/src/builtin_jobs.cpp +++ b/src/builtin_jobs.cpp @@ -40,12 +40,13 @@ static int cpu_use(const job_t *j) { double t2 = 1000000.0 * t.tv_sec + t.tv_usec; // Check for a race condition that can cause negative CPU usage to be reported (#7066) - if (t2 < t1 || jiffies < p->last_jiffies) { + unsigned long cached_last_jiffies = p->last_jiffies; + if (t2 < t1 || jiffies < cached_last_jiffies) { continue; } // std::fwprintf( stderr, L"t1 %f t2 %f p1 %d p2 %d\n", t1, t2, jiffies, p->last_jiffies ); - u += (static_cast(jiffies - p->last_jiffies)) / (t2 - t1); + u += (static_cast(jiffies - cached_last_jiffies)) / (t2 - t1); } return u * 1000000; }