return ERR_PTR(-EINVAL);
        }
 
+       /* If the process just called exec(3), it is possible that the
+        * cleanup of the kfd_process (following the release of the mm
+        * of the old process image) is still in the cleanup work queue.
+        * Make sure to drain any job before trying to recreate any
+        * resource for this process.
+        */
+       flush_workqueue(kfd_process_wq);
+
        /*
         * take kfd processes mutex before starting of process creation
         * so there won't be a case where two threads of the same process
        if (process) {
                pr_debug("Process already found\n");
        } else {
-               /* If the process just called exec(3), it is possible that the
-                * cleanup of the kfd_process (following the release of the mm
-                * of the old process image) is still in the cleanup work queue.
-                * Make sure to drain any job before trying to recreate any
-                * resource for this process.
-                */
-               flush_workqueue(kfd_process_wq);
-
                process = create_process(thread);
                if (IS_ERR(process))
                        goto out;