Mesa (master): etnaviv: drm: Don't miscalculate timeout

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 22 13:45:46 UTC 2020


Module: Mesa
Branch: master
Commit: d817f2c69615cf37b78f484a25b7831ebe9dbe6f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d817f2c69615cf37b78f484a25b7831ebe9dbe6f

Author: Guido Günther <agx at sigxcpu.org>
Date:   Wed Jan 22 11:43:11 2020 +0100

etnaviv: drm: Don't miscalculate timeout

The current code overflows (s * 1000000000) for s >= 5 but that is
e.g. used in etna_bo_cpu_prep.

Signed-off-by: Guido Günther <agx at sigxcpu.org>
Reviewed-by: Jonathan Marek <jonathan at marek.ca>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3509>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3509>

---

 src/etnaviv/drm/etnaviv_priv.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/etnaviv/drm/etnaviv_priv.h b/src/etnaviv/drm/etnaviv_priv.h
index 2ab0e473ea9..8ceb6c3c431 100644
--- a/src/etnaviv/drm/etnaviv_priv.h
+++ b/src/etnaviv/drm/etnaviv_priv.h
@@ -204,10 +204,9 @@ struct etna_perfmon_signal
 static inline void get_abs_timeout(struct drm_etnaviv_timespec *tv, uint64_t ns)
 {
 	struct timespec t;
-	uint32_t s = ns / 1000000000;
 	clock_gettime(CLOCK_MONOTONIC, &t);
-	tv->tv_sec = t.tv_sec + s;
-	tv->tv_nsec = t.tv_nsec + ns - (s * 1000000000);
+	tv->tv_sec = t.tv_sec + ns / 1000000000;
+	tv->tv_nsec = t.tv_nsec + ns % 1000000000;
 }
 
 #if HAVE_VALGRIND



More information about the mesa-commit mailing list