From 1fb5ce0a11ccb8a0f8d41d0499f8a16b1dfef379 Mon Sep 17 00:00:00 2001 From: Mika Kuoppala Date: Wed, 20 Feb 2019 16:47:01 -0800 Subject: [PATCH] intel/tools: Initialize offset correctly for i965_asm If we leave offset uninitialized, access to store will be random depending on stack value and can segfault. Signed-off-by: Mika Kuoppala Reviewed-by: Sagar Ghuge Reviewed-by: Matt Turner --- src/intel/tools/i965_asm.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/intel/tools/i965_asm.c b/src/intel/tools/i965_asm.c index 667f43da0d7..1a53568abb5 100644 --- a/src/intel/tools/i965_asm.c +++ b/src/intel/tools/i965_asm.c @@ -29,7 +29,7 @@ extern FILE *yyin; struct brw_codegen *p; static int c_literal_output = 0; -char *input_filename; +char *input_filename = NULL; int errors; static void @@ -98,7 +98,7 @@ int main(int argc, char **argv) bool help = false, compact = false; void *store; uint64_t pci_id = 0; - int offset, err; + int offset = 0, err; int start_offset = 0; struct disasm_info *disasm_info; struct gen_device_info *devinfo; @@ -205,13 +205,11 @@ int main(int argc, char **argv) brw_validate_instructions(p->devinfo, p->store, 0, p->next_insn_offset, disasm_info); - int nr_insn = (p->next_insn_offset - start_offset) / 16; + const int nr_insn = (p->next_insn_offset - start_offset) / 16; if (compact) brw_compact_instructions(p, start_offset, disasm_info); - ralloc_free(disasm_info); - for (int i = 0; i < nr_insn; i++) { const brw_inst *insn = store + offset; bool compacted = false; @@ -226,6 +224,8 @@ int main(int argc, char **argv) print_instruction(output, compacted, insn); } + ralloc_free(disasm_info); + if (c_literal_output) fprintf(output, "}"); @@ -233,11 +233,8 @@ int main(int argc, char **argv) goto end; end: - if (input_filename) - free(input_filename); - - if (output_file) - free(output_file); + free(input_filename); + free(output_file); if (yyin) fclose(yyin); -- 2.30.2