drm/i915/gem: Disallow creating contexts with too many engines
There's no sense in allowing userspace to create more engines than it can possibly access via execbuf. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210708154835.528166-13-jason@jlekstrand.net
This commit is contained in:
committed by
Daniel Vetter
parent
5ac545b8b0
commit
ebb1ca741b
@@ -1639,11 +1639,11 @@ set_engines(struct i915_gem_context *ctx,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that I915_EXEC_RING_MASK limits execbuf to only using the
|
|
||||||
* first 64 engines defined here.
|
|
||||||
*/
|
|
||||||
num_engines = (args->size - sizeof(*user)) / sizeof(*user->engines);
|
num_engines = (args->size - sizeof(*user)) / sizeof(*user->engines);
|
||||||
|
/* RING_MASK has no shift so we can use it directly here */
|
||||||
|
if (num_engines > I915_EXEC_RING_MASK + 1)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
set.engines = alloc_engines(num_engines);
|
set.engines = alloc_engines(num_engines);
|
||||||
if (!set.engines)
|
if (!set.engines)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|||||||
Reference in New Issue
Block a user