]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
accel/ivpu: Fix race condition when mapping dmabuf
authorWludzik, Jozef <jozef.wludzik@intel.com>
Tue, 14 Oct 2025 07:17:25 +0000 (09:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:02:28 +0000 (14:02 +0100)
[ Upstream commit 63c7870fab67b2ab2bfe75e8b46f3c37b88c47a8 ]

Fix a race that can occur when multiple jobs submit the same dmabuf.
This could cause the sg_table to be mapped twice, leading to undefined
behavior.

Fixes: e0c0891cd63b ("accel/ivpu: Rework bind/unbind of imported buffers")
Signed-off-by: Wludzik, Jozef <jozef.wludzik@intel.com>
Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Link: https://lore.kernel.org/r/20251014071725.3047287-1-karol.wachowski@linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/accel/ivpu/ivpu_gem.c

index 171e809575ad65cea5deb7ceee1c1a1530237c03..1fca969df19dc35145b8f0403eeab48781b3e69a 100644 (file)
@@ -45,12 +45,13 @@ static inline void ivpu_bo_unlock(struct ivpu_bo *bo)
 
 static struct sg_table *ivpu_bo_map_attachment(struct ivpu_device *vdev, struct ivpu_bo *bo)
 {
-       struct sg_table *sgt = bo->base.sgt;
+       struct sg_table *sgt;
 
        drm_WARN_ON(&vdev->drm, !bo->base.base.import_attach);
 
        ivpu_bo_lock(bo);
 
+       sgt = bo->base.sgt;
        if (!sgt) {
                sgt = dma_buf_map_attachment(bo->base.base.import_attach, DMA_BIDIRECTIONAL);
                if (IS_ERR(sgt))