drm/i915: Reject unknown syncobj flags
We have to reject unknown flags for uAPI considerations, and also
because the curent implementation limits their i915 storage space
to two bits.
v2: (Chris Wilson)
* Fix fail in ABI check.
* Added unknown flags and BUILD_BUG_ON.
v3:
* Use ARCH_KMALLOC_MINALIGN instead of alignof. (Chris Wilson)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Fixes: cf6e7bac63
("drm/i915: Add support for drm syncobjs")
Cc: Jason Ekstrand <jason@jlekstrand.net>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: David Airlie <airlied@linux.ie>
Cc: intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171031102326.9738-1-tvrtko.ursulin@linux.intel.com
This commit is contained in:
parent
49e43ef7c6
commit
ebcaa1ff8b
@ -2104,6 +2104,11 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fence.flags & __I915_EXEC_FENCE_UNKNOWN_FLAGS) {
|
||||||
|
err = -EINVAL;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
syncobj = drm_syncobj_find(file, fence.handle);
|
syncobj = drm_syncobj_find(file, fence.handle);
|
||||||
if (!syncobj) {
|
if (!syncobj) {
|
||||||
DRM_DEBUG("Invalid syncobj handle provided\n");
|
DRM_DEBUG("Invalid syncobj handle provided\n");
|
||||||
@ -2111,6 +2116,9 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BUILD_BUG_ON(~(ARCH_KMALLOC_MINALIGN - 1) &
|
||||||
|
~__I915_EXEC_FENCE_UNKNOWN_FLAGS);
|
||||||
|
|
||||||
fences[n] = ptr_pack_bits(syncobj, fence.flags, 2);
|
fences[n] = ptr_pack_bits(syncobj, fence.flags, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -839,6 +839,7 @@ struct drm_i915_gem_exec_fence {
|
|||||||
|
|
||||||
#define I915_EXEC_FENCE_WAIT (1<<0)
|
#define I915_EXEC_FENCE_WAIT (1<<0)
|
||||||
#define I915_EXEC_FENCE_SIGNAL (1<<1)
|
#define I915_EXEC_FENCE_SIGNAL (1<<1)
|
||||||
|
#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1))
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user