Skip to content

Commit 40a4884

Browse files
tursulinrodrigovivi
authored andcommitted
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: cf6e7ba ("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 (cherry picked from commit ebcaa1f) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent 39dae59 commit 40a4884

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

drivers/gpu/drm/i915/i915_gem_execbuffer.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2094,13 +2094,21 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
20942094
goto err;
20952095
}
20962096

2097+
if (fence.flags & __I915_EXEC_FENCE_UNKNOWN_FLAGS) {
2098+
err = -EINVAL;
2099+
goto err;
2100+
}
2101+
20972102
syncobj = drm_syncobj_find(file, fence.handle);
20982103
if (!syncobj) {
20992104
DRM_DEBUG("Invalid syncobj handle provided\n");
21002105
err = -ENOENT;
21012106
goto err;
21022107
}
21032108

2109+
BUILD_BUG_ON(~(ARCH_KMALLOC_MINALIGN - 1) &
2110+
~__I915_EXEC_FENCE_UNKNOWN_FLAGS);
2111+
21042112
fences[n] = ptr_pack_bits(syncobj, fence.flags, 2);
21052113
}
21062114

include/uapi/drm/i915_drm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,7 @@ struct drm_i915_gem_exec_fence {
829829

830830
#define I915_EXEC_FENCE_WAIT (1<<0)
831831
#define I915_EXEC_FENCE_SIGNAL (1<<1)
832+
#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1))
832833
__u32 flags;
833834
};
834835

0 commit comments

Comments
 (0)