Merge tag 'drm-misc-next-2024-01-11' of git://anongit.freedesktop.org/drm/drm-misc...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / scheduler / sched_main.c
index 85f082396d42da982589fe69183c71743c69a89b..8acbef7ae53d116a995e46c2e5de930cc9166758 100644 (file)
@@ -1248,7 +1248,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
                   long timeout, struct workqueue_struct *timeout_wq,
                   atomic_t *score, const char *name, struct device *dev)
 {
-       int i, ret;
+       int i;
 
        sched->ops = ops;
        sched->credit_limit = credit_limit;
@@ -1284,11 +1284,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
 
                sched->own_submit_wq = true;
        }
-       ret = -ENOMEM;
+
        sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
                                        GFP_KERNEL | __GFP_ZERO);
        if (!sched->sched_rq)
-               goto Out_free;
+               goto Out_check_own;
        sched->num_rqs = num_rqs;
        for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
                sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
@@ -1313,13 +1313,14 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
 Out_unroll:
        for (--i ; i >= DRM_SCHED_PRIORITY_KERNEL; i--)
                kfree(sched->sched_rq[i]);
-Out_free:
+
        kfree(sched->sched_rq);
        sched->sched_rq = NULL;
+Out_check_own:
        if (sched->own_submit_wq)
                destroy_workqueue(sched->submit_wq);
        drm_err(sched, "%s: Failed to setup GPU scheduler--out of memory\n", __func__);
-       return ret;
+       return -ENOMEM;
 }
 EXPORT_SYMBOL(drm_sched_init);