From b6323796c40e939d60edace9422de9e38145ac85 Mon Sep 17 00:00:00 2001 From: Andrea Terzolo Date: Tue, 3 Sep 2024 10:36:50 +0200 Subject: [PATCH] fix: use correct index for libbpf stats Signed-off-by: Andrea Terzolo Co-authored-by: Melissa Kilby --- userspace/libpman/src/stats.c | 16 +++++++--------- userspace/libscap/engine/bpf/scap_bpf.c | 4 +--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/userspace/libpman/src/stats.c b/userspace/libpman/src/stats.c index 9fe241aea7..9d4bd16001 100644 --- a/userspace/libpman/src/stats.c +++ b/userspace/libpman/src/stats.c @@ -292,24 +292,22 @@ struct metrics_v2 *pman_get_metrics_v2(uint32_t flags, uint32_t *nstats, int32_t g_state.stats[offset].type = METRIC_VALUE_TYPE_U64; g_state.stats[offset].flags = METRICS_V2_LIBBPF_STATS; strlcpy(g_state.stats[offset].name, info.name, METRIC_NAME_MAX); + strlcat(g_state.stats[offset].name, modern_bpf_libbpf_stats_names[stat], sizeof(g_state.stats[offset].name)); switch(stat) { case RUN_CNT: - strlcat(g_state.stats[offset].name, modern_bpf_libbpf_stats_names[RUN_CNT], sizeof(g_state.stats[offset].name)); - g_state.stats[stat].unit = METRIC_VALUE_UNIT_COUNT; - g_state.stats[stat].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; + g_state.stats[offset].unit = METRIC_VALUE_UNIT_COUNT; + g_state.stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; g_state.stats[offset].value.u64 = info.run_cnt; break; case RUN_TIME_NS: - strlcat(g_state.stats[offset].name, modern_bpf_libbpf_stats_names[RUN_TIME_NS], sizeof(g_state.stats[offset].name)); - g_state.stats[stat].unit = METRIC_VALUE_UNIT_TIME_NS_COUNT; - g_state.stats[stat].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; + g_state.stats[offset].unit = METRIC_VALUE_UNIT_TIME_NS_COUNT; + g_state.stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; g_state.stats[offset].value.u64 = info.run_time_ns; break; case AVG_TIME_NS: - strlcat(g_state.stats[offset].name, modern_bpf_libbpf_stats_names[AVG_TIME_NS], sizeof(g_state.stats[offset].name)); - g_state.stats[stat].unit = METRIC_VALUE_UNIT_TIME_NS; - g_state.stats[stat].metric_type = METRIC_VALUE_METRIC_TYPE_NON_MONOTONIC_CURRENT; + g_state.stats[offset].unit = METRIC_VALUE_UNIT_TIME_NS; + g_state.stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_NON_MONOTONIC_CURRENT; g_state.stats[offset].value.u64 = 0; if(info.run_cnt > 0) { diff --git a/userspace/libscap/engine/bpf/scap_bpf.c b/userspace/libscap/engine/bpf/scap_bpf.c index f3c389426f..f814072f57 100644 --- a/userspace/libscap/engine/bpf/scap_bpf.c +++ b/userspace/libscap/engine/bpf/scap_bpf.c @@ -1856,22 +1856,20 @@ const struct metrics_v2* scap_bpf_get_stats_v2(struct scap_engine_handle engine, { strlcpy(stats[offset].name, info.name, METRIC_NAME_MAX); } + strlcat(stats[offset].name, bpf_libbpf_stats_names[stat], sizeof(stats[offset].name)); switch(stat) { case RUN_CNT: - strlcat(stats[offset].name, bpf_libbpf_stats_names[RUN_CNT], sizeof(stats[offset].name)); stats[offset].value.u64 = info.run_cnt; stats[offset].unit = METRIC_VALUE_UNIT_COUNT; stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; break; case RUN_TIME_NS: - strlcat(stats[offset].name, bpf_libbpf_stats_names[RUN_TIME_NS], sizeof(stats[offset].name)); stats[offset].value.u64 = info.run_time_ns; stats[offset].unit = METRIC_VALUE_UNIT_TIME_NS_COUNT; stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_MONOTONIC; break; case AVG_TIME_NS: - strlcat(stats[offset].name, bpf_libbpf_stats_names[AVG_TIME_NS], sizeof(stats[offset].name)); stats[offset].value.u64 = 0; stats[offset].unit = METRIC_VALUE_UNIT_TIME_NS; stats[offset].metric_type = METRIC_VALUE_METRIC_TYPE_NON_MONOTONIC_CURRENT;