OSDN Git Service

Merge 4.4.187 into android-4.4
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / tools / perf / util / evsel.c
index d4913a4..747c507 100644 (file)
@@ -491,6 +491,9 @@ const char *perf_evsel__name(struct perf_evsel *evsel)
 {
        char bf[128];
 
+       if (!evsel)
+               goto out_unknown;
+
        if (evsel->name)
                return evsel->name;
 
@@ -527,7 +530,10 @@ const char *perf_evsel__name(struct perf_evsel *evsel)
 
        evsel->name = strdup(bf);
 
-       return evsel->name ?: "unknown";
+       if (evsel->name)
+               return evsel->name;
+out_unknown:
+       return "unknown";
 }
 
 const char *perf_evsel__group_name(struct perf_evsel *evsel)
@@ -624,13 +630,13 @@ static void apply_config_terms(struct perf_evsel *evsel,
        struct perf_evsel_config_term *term;
        struct list_head *config_terms = &evsel->config_terms;
        struct perf_event_attr *attr = &evsel->attr;
-       struct callchain_param param;
+       /* callgraph default */
+       struct callchain_param param = {
+               .record_mode = callchain_param.record_mode,
+       };
        u32 dump_size = 0;
        char *callgraph_buf = NULL;
 
-       /* callgraph default */
-       param.record_mode = callchain_param.record_mode;
-
        list_for_each_entry(term, config_terms, list) {
                switch (term->type) {
                case PERF_EVSEL__CONFIG_TERM_PERIOD:
@@ -1051,6 +1057,7 @@ void perf_evsel__exit(struct perf_evsel *evsel)
 {
        assert(list_empty(&evsel->node));
        assert(evsel->evlist == NULL);
+       perf_evsel__free_counts(evsel);
        perf_evsel__free_fd(evsel);
        perf_evsel__free_id(evsel);
        perf_evsel__free_config_terms(evsel);