From 65576eec2ecafcf04e035a48f13456d810720a5c Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 13 Dec 2021 17:02:34 -0800 Subject: [PATCH] venus: fix vn_buffer_get_max_buffer_size The binary search can lead to infinite loop. Fixes dEQP-VK.api.object_management.alloc_callback_fail.device where vn_CreateBuffer can always fail. Fixes: a74f2495ca0 ("venus: implement vn_buffer_get_max_buffer_size") Signed-off-by: Chia-I Wu Reviewed-by: Ryan Neph Reviewed-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_buffer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/virtio/vulkan/vn_buffer.c b/src/virtio/vulkan/vn_buffer.c index 44d1b51..5470bc1 100644 --- a/src/virtio/vulkan/vn_buffer.c +++ b/src/virtio/vulkan/vn_buffer.c @@ -136,16 +136,16 @@ vn_buffer_get_max_buffer_size(struct vn_device *dev, uint8_t begin = 0; uint8_t end = 64; - while (begin <= end) { + while (begin < end) { uint8_t mid = (begin + end) >> 1; - create_info.size = 1 << mid; + create_info.size = 1ull << mid; if (vn_CreateBuffer(dev_handle, &create_info, alloc, &buf_handle) == VK_SUCCESS) { vn_DestroyBuffer(dev_handle, buf_handle, alloc); max_buffer_size = create_info.size; begin = mid + 1; } else { - end = mid - 1; + end = mid; } } -- 2.7.4