From fe59044f47635c146f060008d33a87e72c518022 Mon Sep 17 00:00:00 2001 From: Paulo Zanoni Date: Thu, 29 Aug 2024 09:31:47 -0700 Subject: [PATCH] anv/trtt: mark vk_sync_get_value()'s value as defined for Valgrind MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Valgrind doesn't seem to know that drmSyncobjQuery() writes to the variable that we pass as 'last_value'. This gets rid of: ==6275== Conditional jump or move depends on uninitialised value(s) ==6275== at 0x5308370: anv_sparse_trtt_garbage_collect_batches (anv_sparse.c:540) ==6275== by 0x53091E2: anv_sparse_bind_trtt (anv_sparse.c:825) ==6275== by 0x5309771: anv_sparse_bind (anv_sparse.c:953) ==6275== by 0x5309A3B: anv_free_sparse_bindings (anv_sparse.c:1041) ==6275== by 0x529FF21: anv_DestroyBuffer (anv_buffer.c:248) ==6275== by 0x932ADBD: ??? (in /usr/lib/x86_64-linux-gnu/libVkLayer_khronos_validation.so) ==6275== by 0x127AA2: MyVkBuffer::~MyVkBuffer() (sparse.cpp:364) ==6275== by 0x12B2D4: MyApp::test1_trivial_sparse() (sparse.cpp:1421) ==6275== by 0x13E01A: MyApp::run_test(int) (sparse.cpp:6594) ==6275== by 0x13E3B0: main (sparse.cpp:6656) ==6275== Uninitialised value was created by a stack allocation ==6275== at 0x53082D3: anv_sparse_trtt_garbage_collect_batches (anv_sparse.c:525) An alternative to these Valgrind macros would simply have been to zero-intialize last_value. Reviewed-by: José Roberto de Souza Signed-off-by: Paulo Zanoni Part-of: --- src/intel/vulkan/anv_sparse.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/intel/vulkan/anv_sparse.c b/src/intel/vulkan/anv_sparse.c index 28cd3913ad3..97816c24e8a 100644 --- a/src/intel/vulkan/anv_sparse.c +++ b/src/intel/vulkan/anv_sparse.c @@ -578,6 +578,11 @@ anv_sparse_trtt_garbage_collect_batches(struct anv_device *device, vk_sync_get_value(&device->vk, trtt->timeline, &last_value); if (result != VK_SUCCESS) return result; + + /* Valgrind doesn't know that drmSyncobjQuery writes to 'last_value' on + * success. + */ + VG(VALGRIND_MAKE_MEM_DEFINED(&last_value, sizeof(last_value))); } else { last_value = trtt->timeline_val; }