drm/i915: Fix possible uninitialized variable in parallel extension
authorMatthew Brost <matthew.brost@intel.com>
Sun, 19 Dec 2021 00:19:09 +0000 (16:19 -0800)
committerJohn Harrison <John.C.Harrison@Intel.com>
Thu, 23 Dec 2021 20:53:06 +0000 (12:53 -0800)
'prev_engine' was declared inside the output loop and checked in the
inner after at least 1 pass of either loop. The variable should be
declared outside both loops as it needs to be persistent across the
entire loop structure.

Fixes: e5e32171a2cf ("drm/i915/guc: Connect UAPI to GuC multi-lrc interface")
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211219001909.24348-1-matthew.brost@intel.com
drivers/gpu/drm/i915/gem/i915_gem_context.c

index db4d03a..7ff1d1e 100644 (file)
@@ -564,6 +564,7 @@ set_proto_ctx_engines_parallel_submit(struct i915_user_extension __user *base,
                container_of_user(base, typeof(*ext), base);
        const struct set_proto_ctx_engines *set = data;
        struct drm_i915_private *i915 = set->i915;
+       struct i915_engine_class_instance prev_engine;
        u64 flags;
        int err = 0, n, i, j;
        u16 slot, width, num_siblings;
@@ -632,7 +633,6 @@ set_proto_ctx_engines_parallel_submit(struct i915_user_extension __user *base,
        /* Create contexts / engines */
        for (i = 0; i < width; ++i) {
                intel_engine_mask_t current_mask = 0;
-               struct i915_engine_class_instance prev_engine;
 
                for (j = 0; j < num_siblings; ++j) {
                        struct i915_engine_class_instance ci;