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
