amdgpu: fix overflow for timeout calculation
Set the timeout to AMDGPU_TIMEOUT_INFINITE when overflow happens Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>main
parent
8913cd95b2
commit
9c15b4aacd
|
@ -289,12 +289,16 @@ drm_private uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout)
|
||||||
|
|
||||||
if (timeout != AMDGPU_TIMEOUT_INFINITE) {
|
if (timeout != AMDGPU_TIMEOUT_INFINITE) {
|
||||||
struct timespec current;
|
struct timespec current;
|
||||||
|
uint64_t current_ns;
|
||||||
r = clock_gettime(CLOCK_MONOTONIC, ¤t);
|
r = clock_gettime(CLOCK_MONOTONIC, ¤t);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
timeout += ((uint64_t)current.tv_sec) * 1000000000ull;
|
current_ns = ((uint64_t)current.tv_sec) * 1000000000ull;
|
||||||
timeout += current.tv_nsec;
|
current_ns += current.tv_nsec;
|
||||||
|
timeout += current_ns;
|
||||||
|
if (timeout < current_ns)
|
||||||
|
timeout = AMDGPU_TIMEOUT_INFINITE;
|
||||||
}
|
}
|
||||||
return timeout;
|
return timeout;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue