rocket_ioctl_submit() calls rocket_ioctl_submit_job() in a loop but
ignores its return value. If any job submission fails, the error is
silently dropped and the function returns 0 (success) to userspace,
leaving subsequent jobs potentially in an inconsistent state.

Fix this by propagating the error and breaking out of the loop on
the first failure.

Signed-off-by: Kartik Nair <[email protected]>
---
 drivers/accel/rocket/rocket_job.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/accel/rocket/rocket_job.c 
b/drivers/accel/rocket/rocket_job.c
index ac51bff39..abac26853 100644
--- a/drivers/accel/rocket/rocket_job.c
+++ b/drivers/accel/rocket/rocket_job.c
@@ -626,8 +626,11 @@ int rocket_ioctl_submit(struct drm_device *dev, void 
*data, struct drm_file *fil
        }
 
 
-       for (i = 0; i < args->job_count; i++)
-               rocket_ioctl_submit_job(dev, file, &jobs[i]);
+       for (i = 0; i < args->job_count; i++) {
+               ret = rocket_ioctl_submit_job(dev, file, &jobs[i]);
+               if (ret)
+                       goto exit;
+       }
 
 exit:
        kvfree(jobs);
-- 
2.50.0

Reply via email to