mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 06:10:13 +01:00
nir/large_constants: more careful data copying
A filed of nir_variable.location may be equel to -1.
That may cause copying to invalid address of list-node,
making some internal fields corrupted.
Patch fixes segfault during freeing context due to
corrupted address of ralloc_header.destructor.
v2: copy data if var is constant (Connor Abbott)
CC: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fixes: b6d4753568 (nir/large_constants: De-duplicate constants)
Signed-off-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111676
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
This commit is contained in:
parent
237e6f4fed
commit
c7b2a2fd36
1 changed files with 1 additions and 1 deletions
|
|
@ -318,7 +318,7 @@ nir_opt_large_constants(nir_shader *shader,
|
|||
shader->constant_data = rzalloc_size(shader, shader->constant_data_size);
|
||||
for (int i = 0; i < num_locals; i++) {
|
||||
struct var_info *info = &var_infos[i];
|
||||
if (!info->duplicate) {
|
||||
if (!info->duplicate && info->is_constant) {
|
||||
memcpy((char *)shader->constant_data + info->var->data.location,
|
||||
info->constant_data, info->constant_data_size);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue