]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf lock contention: Handle error in a single place
authorNamhyung Kim <namhyung@kernel.org>
Fri, 30 Aug 2024 06:51:48 +0000 (23:51 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 30 Aug 2024 12:57:19 +0000 (09:57 -0300)
It has some duplicate codes to do the same job.  Let's add a label and
goto there to handle errors in a single place.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <song@kernel.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20240830065150.1758962-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/bpf_skel/lock_contention.bpf.c

index d931a898c434be0d430759db9e2c8572dcdb65b5..e8a6f64630192b87502d9247cb08c4bafd007ceb 100644 (file)
@@ -439,11 +439,8 @@ int contention_end(u64 *ctx)
 
        duration = bpf_ktime_get_ns() - pelem->timestamp;
        if ((__s64)duration < 0) {
-               pelem->lock = 0;
-               if (need_delete)
-                       bpf_map_delete_elem(&tstamp, &pid);
                __sync_fetch_and_add(&time_fail, 1);
-               return 0;
+               goto out;
        }
 
        switch (aggr_mode) {
@@ -477,11 +474,8 @@ int contention_end(u64 *ctx)
        data = bpf_map_lookup_elem(&lock_stat, &key);
        if (!data) {
                if (data_map_full) {
-                       pelem->lock = 0;
-                       if (need_delete)
-                               bpf_map_delete_elem(&tstamp, &pid);
                        __sync_fetch_and_add(&data_fail, 1);
-                       return 0;
+                       goto out;
                }
 
                struct contention_data first = {
@@ -502,10 +496,7 @@ int contention_end(u64 *ctx)
                                data_map_full = 1;
                        __sync_fetch_and_add(&data_fail, 1);
                }
-               pelem->lock = 0;
-               if (need_delete)
-                       bpf_map_delete_elem(&tstamp, &pid);
-               return 0;
+               goto out;
        }
 
        __sync_fetch_and_add(&data->total_time, duration);
@@ -517,6 +508,7 @@ int contention_end(u64 *ctx)
        if (data->min_time > duration)
                data->min_time = duration;
 
+out:
        pelem->lock = 0;
        if (need_delete)
                bpf_map_delete_elem(&tstamp, &pid);