Mesa (master): aco: fix uninitialized data in the binary
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jan 13 14:07:17 UTC 2020
Module: Mesa
Branch: master
Commit: bbac52873f4248c2f545f12137bd24071a8043cc
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bbac52873f4248c2f545f12137bd24071a8043cc
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Tue Sep 24 17:21:51 2019 +0100
aco: fix uninitialized data in the binary
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-By: Timur Kristóf <timur.kristof at gmail.com>
Fixes: 93c8ebfa780 ('aco: Initial commit of independent AMD compiler')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3081>
---
src/amd/compiler/aco_interface.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 802adcefb1b..f951c4fdc5f 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -154,7 +154,11 @@ void aco_compile_shader(unsigned shader_count,
}
size += code.size() * sizeof(uint32_t) + sizeof(radv_shader_binary_legacy);
- radv_shader_binary_legacy* legacy_binary = (radv_shader_binary_legacy*) malloc(size);
+ /* We need to calloc to prevent unintialized data because this will be used
+ * directly for the disk cache. Uninitialized data can appear because of
+ * padding in the struct or because legacy_binary->data can be at an offset
+ * from the start less than sizeof(radv_shader_binary_legacy). */
+ radv_shader_binary_legacy* legacy_binary = (radv_shader_binary_legacy*) calloc(size, 1);
legacy_binary->base.type = RADV_BINARY_TYPE_LEGACY;
legacy_binary->base.stage = shaders[shader_count-1]->info.stage;
More information about the mesa-commit
mailing list