}
 }
 
-static int annotation__calc_percent(struct annotation *notes,
-                                   struct perf_evsel *evsel, s64 len)
+static void annotation__calc_percent(struct annotation *notes,
+                                    struct perf_evsel *evsel, s64 len)
 {
        struct annotation_line *al, *next;
 
                        calc_percent(hist, sample, al->offset, end);
                }
        }
-
-       return 0;
 }
 
-int symbol__calc_percent(struct symbol *sym, struct perf_evsel *evsel)
+void symbol__calc_percent(struct symbol *sym, struct perf_evsel *evsel)
 {
        struct annotation *notes = symbol__annotation(sym);
 
-       return annotation__calc_percent(notes, evsel, symbol__size(sym));
+       annotation__calc_percent(notes, evsel, symbol__size(sym));
 }
 
 int symbol__annotate(struct symbol *sym, struct map *map,
        }
 
        err = symbol__disassemble(sym, &args);
-       if (err)
-               return err;
+       if (!err)
+               symbol__calc_percent(sym, evsel);
+
+       return err;
 
-       return symbol__calc_percent(sym, evsel);
 }
 
 static void insert_source_line(struct rb_root *root, struct annotation_line *al)
 
 annotation_line__next(struct annotation_line *pos, struct list_head *head);
 int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw);
 size_t disasm__fprintf(struct list_head *head, FILE *fp);
-int symbol__calc_percent(struct symbol *sym, struct perf_evsel *evsel);
+void symbol__calc_percent(struct symbol *sym, struct perf_evsel *evsel);
 
 struct sym_hist {
        u64                   nr_samples;