mirror of
https://github.com/opnsense/src.git
synced 2026-04-21 22:27:47 -04:00
Most error cases in i915_gem_do_execbuffer() jump to one of two labels to
release resources (such as unholding pages) when errors occur. Some recently added error checks return immediately instead of jumping to a label resulting in leaks. Fix these to jump to a label to do cleanup instead. Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D3745
This commit is contained in:
parent
0a19cfd454
commit
2ad026889e
1 changed files with 6 additions and 3 deletions
|
|
@ -1151,7 +1151,8 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
|
|||
if (ctx_id != 0) {
|
||||
DRM_DEBUG("Ring %s doesn't support contexts\n",
|
||||
ring->name);
|
||||
return -EPERM;
|
||||
ret = -EPERM;
|
||||
goto pre_struct_lock_err;
|
||||
}
|
||||
break;
|
||||
case I915_EXEC_BLT:
|
||||
|
|
@ -1159,7 +1160,8 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
|
|||
if (ctx_id != 0) {
|
||||
DRM_DEBUG("Ring %s doesn't support contexts\n",
|
||||
ring->name);
|
||||
return -EPERM;
|
||||
ret = -EPERM;
|
||||
goto pre_struct_lock_err;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -1171,7 +1173,8 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
|
|||
if (!intel_ring_initialized(ring)) {
|
||||
DRM_DEBUG("execbuf with invalid ring: %d\n",
|
||||
(int)(args->flags & I915_EXEC_RING_MASK));
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto pre_struct_lock_err;
|
||||
}
|
||||
|
||||
mode = args->flags & I915_EXEC_CONSTANTS_MASK;
|
||||
|
|
|
|||
Loading…
Reference in a new issue