dma_fence: less assert in dma_fence_wait() for reality dma_fence_wait_timeout() can return fence-specific value from the fence ops "wait" callback, which may reduce the value of "timeout" upon return, from the initial MAX_SCHEDULE_TIMEOUT. allow the return value to be -ERESTARTSYS, or anywhere from 1 to the initial value. fixes a crash when trying to "mpv" on radeon/OLAND. diff --git a/sys/external/bsd/drm2/linux/linux_dma_fence.c b/sys/external/bsd/drm2/linux/linux_dma_fence.c index d40d3abb1377..e2bbe0a1bf5f 100644 --- a/sys/external/bsd/drm2/linux/linux_dma_fence.c +++ b/sys/external/bsd/drm2/linux/linux_dma_fence.c @@ -997,7 +997,7 @@ dma_fence_wait(struct dma_fence *fence, bool intr) ret = dma_fence_wait_timeout(fence, intr, MAX_SCHEDULE_TIMEOUT); KASSERT(ret != 0); - KASSERTMSG(ret == -ERESTARTSYS || ret == MAX_SCHEDULE_TIMEOUT, + KASSERTMSG(ret == -ERESTARTSYS || (ret > 0 && ret <= MAX_SCHEDULE_TIMEOUT), "ret=%ld", ret); return (ret < 0 ? ret : 0);