]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
accel/rocket: Fix prep_bo ioctl leaking positive return from dma_resv_wait_timeout()
authorGyeyoung Baek <gye976@gmail.com>
Sun, 19 Apr 2026 07:17:15 +0000 (16:17 +0900)
committerSteven Price <steven.price@arm.com>
Thu, 7 May 2026 13:52:55 +0000 (14:52 +0100)
dma_resv_wait_timeout() returns a positive 'remaining jiffies' value
on success, 0 on timeout, and -errno on failure.

rocket_ioctl_prep_bo() returns this 'long' result from an int-typed
ioctl handler, so positive values reach userspace as bogus errors.
Explicitly set ret to 0 on the success path.

Fixes: 525ad89dd904 ("accel/rocket: Add IOCTLs for synchronizing memory accesses")
Cc: stable@vger.kernel.org
Signed-off-by: Gyeyoung Baek <gye976@gmail.com>
Reviewed-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
Link: https://patch.msgid.link/c0ebf83b345721701b22d8f5bc41c52c0ecf5e16.1776581974.git.gye976@gmail.com
Signed-off-by: Steven Price <steven.price@arm.com>
drivers/accel/rocket/rocket_gem.c

index b6a385d2edfc3021486eb9889346737d49dce448..c8084719208a2a6cd28085e3758f9f4a8cf1bd16 100644 (file)
@@ -145,6 +145,8 @@ int rocket_ioctl_prep_bo(struct drm_device *dev, void *data, struct drm_file *fi
        ret = dma_resv_wait_timeout(gem_obj->resv, DMA_RESV_USAGE_WRITE, true, timeout);
        if (!ret)
                ret = timeout ? -ETIMEDOUT : -EBUSY;
+       else if (ret > 0)
+               ret = 0;
 
        shmem_obj = &to_rocket_bo(gem_obj)->base;