intel/brw: Fix OOB reads when printing instructions post-reg-alloc
Post-register allocation, but before brw_fs_lower_vgrfs_to_fixed_grfs, we have registers with the VGRF file but they are actually fixed GRFs. brw_print_instructions_to_file() was seeing VGRFs and trying to access their size, but using bogus register numbers that could be out-of-bound. Detect when we're post-RA and avoid doing this. Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30530>
This commit is contained in:

committed by
Marge Bot

parent
9f5af68995
commit
2d73e42333
@@ -400,7 +400,7 @@ brw_print_instruction_to_file(const fs_visitor &s, const fs_inst *inst, FILE *fi
|
||||
}
|
||||
|
||||
if (inst->dst.offset ||
|
||||
(inst->dst.file == VGRF &&
|
||||
(!s.grf_used && inst->dst.file == VGRF &&
|
||||
s.alloc.sizes[inst->dst.nr] * REG_SIZE != inst->size_written)) {
|
||||
const unsigned reg_size = (inst->dst.file == UNIFORM ? 4 : REG_SIZE);
|
||||
fprintf(file, "+%d.%d", inst->dst.offset / reg_size,
|
||||
@@ -513,7 +513,7 @@ brw_print_instruction_to_file(const fs_visitor &s, const fs_inst *inst, FILE *fi
|
||||
|
||||
fprintf(file, ".%d", inst->src[i].subnr / brw_type_size_bytes(inst->src[i].type));
|
||||
} else if (inst->src[i].offset ||
|
||||
(inst->src[i].file == VGRF &&
|
||||
(!s.grf_used && inst->src[i].file == VGRF &&
|
||||
s.alloc.sizes[inst->src[i].nr] * REG_SIZE != inst->size_read(i))) {
|
||||
const unsigned reg_size = (inst->src[i].file == UNIFORM ? 4 : REG_SIZE);
|
||||
fprintf(file, "+%d.%d", inst->src[i].offset / reg_size,
|
||||
|
Reference in New Issue
Block a user