diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 91bb1fc27420..32e6aade6223 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1210,8 +1210,16 @@ int __i915_wait_request(struct drm_i915_gem_request *req,  	if (i915_gem_request_completed(req, true))  		return 0; -	timeout_expire = timeout ? -		jiffies + nsecs_to_jiffies_timeout((u64)*timeout) : 0; +	timeout_expire = 0; +	if (timeout) { +		if (WARN_ON(*timeout < 0)) +			return -EINVAL; + +		if (*timeout == 0) +			return -ETIME; + +		timeout_expire = jiffies + nsecs_to_jiffies_timeout(*timeout); +	}  	if (INTEL_INFO(dev_priv)->gen >= 6)  		gen6_rps_boost(dev_priv, rps, req->emitted_jiffies);  | 
