diff --git a/.pick_status.json b/.pick_status.json index 0658ea95f3e..aac6ce28eba 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5521,7 +5521,7 @@ "description": "anv: always annotate memory returned from anv_gem_mmap", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "4abf0837cdb14b10a58d28766d5c1d3698d8a6d8" }, diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c index fca72a9803e..9d5fbebaf2d 100644 --- a/src/intel/vulkan/anv_gem.c +++ b/src/intel/vulkan/anv_gem.c @@ -105,7 +105,6 @@ anv_gem_mmap_legacy(struct anv_device *device, uint32_t gem_handle, if (ret != 0) return MAP_FAILED; - VG(VALGRIND_MALLOCLIKE_BLOCK(gem_mmap.addr_ptr, gem_mmap.size, 0, 1)); return (void *)(uintptr_t) gem_mmap.addr_ptr; } @@ -116,10 +115,16 @@ void* anv_gem_mmap(struct anv_device *device, uint32_t gem_handle, uint64_t offset, uint64_t size, uint32_t flags) { + void *map; if (device->physical->has_mmap_offset) - return anv_gem_mmap_offset(device, gem_handle, offset, size, flags); + map = anv_gem_mmap_offset(device, gem_handle, offset, size, flags); else - return anv_gem_mmap_legacy(device, gem_handle, offset, size, flags); + map = anv_gem_mmap_legacy(device, gem_handle, offset, size, flags); + + if (map != MAP_FAILED) + VG(VALGRIND_MALLOCLIKE_BLOCK(map, size, 0, 1)); + + return map; } /* This is just a wrapper around munmap, but it also notifies valgrind that @@ -128,8 +133,7 @@ anv_gem_mmap(struct anv_device *device, uint32_t gem_handle, void anv_gem_munmap(struct anv_device *device, void *p, uint64_t size) { - if (!device->physical->has_mmap_offset) - VG(VALGRIND_FREELIKE_BLOCK(p, 0)); + VG(VALGRIND_FREELIKE_BLOCK(p, 0)); munmap(p, size); }