perf annotate: Return errors from disasm_line__parse_powerpc()
authorAthira Rajeev <atrajeev@linux.ibm.com>
Tue, 4 Mar 2025 15:41:14 +0000 (21:11 +0530)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 7 Mar 2025 00:52:24 +0000 (16:52 -0800)
In disasm_line__parse_powerpc() , return code from function
disasm_line__parse() is ignored. This will result in bad results
if the disasm_line__parse() fails to disasm the line. Use
the return code to fix this.

Signed-off-by: Athira Rajeev <atrajeev@linux.ibm.com>
Tested-By: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Link: https://lore.kernel.org/r/20250304154114.62093-2-atrajeev@linux.ibm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/disasm.c

index a53e8c4e5bca0d9eca1382d6ec33269c0ed8f930..8f0eb56c6fc66a96d4d5ca2ad5c0b9e74ca93cc1 100644 (file)
@@ -976,6 +976,7 @@ static int disasm_line__parse_powerpc(struct disasm_line *dl, struct annotate_ar
        char *tmp_raw_insn, *name_raw_insn = skip_spaces(line);
        char *name = skip_spaces(name_raw_insn + RAW_BYTES);
        int disasm = 0;
+       int ret = 0;
 
        if (args->options->disassembler_used)
                disasm = 1;
@@ -984,7 +985,7 @@ static int disasm_line__parse_powerpc(struct disasm_line *dl, struct annotate_ar
                return -1;
 
        if (disasm)
-               disasm_line__parse(name, namep, rawp);
+               ret = disasm_line__parse(name, namep, rawp);
        else
                *namep = "";
 
@@ -998,7 +999,7 @@ static int disasm_line__parse_powerpc(struct disasm_line *dl, struct annotate_ar
        if (disasm)
                dl->raw.raw_insn = be32_to_cpu(dl->raw.raw_insn);
 
-       return 0;
+       return ret;
 }
 
 static void annotation_line__init(struct annotation_line *al,