panvk: Fix size overflow in GetBufferMemoryRequirements()
authorBoris Brezillon <boris.brezillon@collabora.com>
Sun, 26 Sep 2021 14:11:37 +0000 (16:11 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 28 Sep 2021 14:03:40 +0000 (14:03 +0000)
align64() will overflow if buffer->size is bigger than UINT64_MAX - 63.

Fixes dEQP-VK.api.buffer.basic.size_max_uint64.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13077>

src/panfrost/vulkan/panvk_device.c

index 8254954..5392307 100644 (file)
@@ -1313,7 +1313,7 @@ panvk_GetBufferMemoryRequirements(VkDevice _device,
    pMemoryRequirements->memoryTypeBits = 1;
    pMemoryRequirements->alignment = 64;
    pMemoryRequirements->size =
-      align64(buffer->size, pMemoryRequirements->alignment);
+      MAX2(align64(buffer->size, pMemoryRequirements->alignment), buffer->size);
 }
 
 void