Skip to content

Commit 913ec3c

Browse files
committed
Merge tag 'perf-tools-fixes-for-v5.13-2021-06-19' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
Pull perf tools fixes from Arnaldo Carvalho de Melo: - Fix refcount usage when processing PERF_RECORD_KSYMBOL. - 'perf stat' metric group fixes. - Fix 'perf test' non-bash issue with stat bpf counters. - Update unistd, in.h and socket.h with the kernel sources, silencing perf build warnings. * tag 'perf-tools-fixes-for-v5.13-2021-06-19' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: tools headers UAPI: Sync linux/in.h copy with the kernel sources tools headers UAPI: Sync asm-generic/unistd.h with the kernel original perf beauty: Update copy of linux/socket.h with the kernel sources perf test: Fix non-bash issue with stat bpf counters perf machine: Fix refcount usage when processing PERF_RECORD_KSYMBOL perf metricgroup: Return error code from metricgroup__add_metric_sys_event_iter() perf metricgroup: Fix find_evsel_group() event selector
2 parents d9403d3 + 1792a59 commit 913ec3c

File tree

6 files changed

+16
-13
lines changed

6 files changed

+16
-13
lines changed

tools/include/uapi/asm-generic/unistd.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -863,8 +863,7 @@ __SYSCALL(__NR_process_madvise, sys_process_madvise)
863863
__SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2)
864864
#define __NR_mount_setattr 442
865865
__SYSCALL(__NR_mount_setattr, sys_mount_setattr)
866-
#define __NR_quotactl_path 443
867-
__SYSCALL(__NR_quotactl_path, sys_quotactl_path)
866+
/* 443 is reserved for quotactl_path */
868867

869868
#define __NR_landlock_create_ruleset 444
870869
__SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset)

tools/include/uapi/linux/in.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,9 @@ struct sockaddr_in {
289289
/* Address indicating an error return. */
290290
#define INADDR_NONE ((unsigned long int) 0xffffffff)
291291

292+
/* Dummy address for src of ICMP replies if no real address is set (RFC7600). */
293+
#define INADDR_DUMMY ((unsigned long int) 0xc0000008)
294+
292295
/* Network number for local host loopback. */
293296
#define IN_LOOPBACKNET 127
294297

tools/perf/tests/shell/stat_bpf_counters.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ compare_number()
1111
second_num=$2
1212

1313
# upper bound is first_num * 110%
14-
upper=$(( $first_num + $first_num / 10 ))
14+
upper=$(expr $first_num + $first_num / 10 )
1515
# lower bound is first_num * 90%
16-
lower=$(( $first_num - $first_num / 10 ))
16+
lower=$(expr $first_num - $first_num / 10 )
1717

1818
if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
1919
echo "The difference between $first_num and $second_num are greater than 10%."

tools/perf/trace/beauty/include/linux/socket.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,4 @@ extern int __sys_socketpair(int family, int type, int protocol,
438438
int __user *usockvec);
439439
extern int __sys_shutdown_sock(struct socket *sock, int how);
440440
extern int __sys_shutdown(int fd, int how);
441-
442-
extern struct ns_common *get_net_ns(struct ns_common *ns);
443441
#endif /* _LINUX_SOCKET_H */

tools/perf/util/machine.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -776,10 +776,10 @@ static int machine__process_ksymbol_register(struct machine *machine,
776776
if (dso) {
777777
dso->kernel = DSO_SPACE__KERNEL;
778778
map = map__new2(0, dso);
779+
dso__put(dso);
779780
}
780781

781782
if (!dso || !map) {
782-
dso__put(dso);
783783
return -ENOMEM;
784784
}
785785

@@ -792,6 +792,7 @@ static int machine__process_ksymbol_register(struct machine *machine,
792792
map->start = event->ksymbol.addr;
793793
map->end = map->start + event->ksymbol.len;
794794
maps__insert(&machine->kmaps, map);
795+
map__put(map);
795796
dso__set_loaded(dso);
796797

797798
if (is_bpf_image(event->ksymbol.name)) {

tools/perf/util/metricgroup.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ static bool contains_event(struct evsel **metric_events, int num_events,
162162
return false;
163163
}
164164

165-
static bool evsel_same_pmu(struct evsel *ev1, struct evsel *ev2)
165+
static bool evsel_same_pmu_or_none(struct evsel *ev1, struct evsel *ev2)
166166
{
167167
if (!ev1->pmu_name || !ev2->pmu_name)
168-
return false;
168+
return true;
169169

170170
return !strcmp(ev1->pmu_name, ev2->pmu_name);
171171
}
@@ -288,7 +288,7 @@ static struct evsel *find_evsel_group(struct evlist *perf_evlist,
288288
*/
289289
if (!has_constraint &&
290290
ev->leader != metric_events[i]->leader &&
291-
evsel_same_pmu(ev->leader, metric_events[i]->leader))
291+
evsel_same_pmu_or_none(ev->leader, metric_events[i]->leader))
292292
break;
293293
if (!strcmp(metric_events[i]->name, ev->name)) {
294294
set_bit(ev->idx, evlist_used);
@@ -1073,16 +1073,18 @@ static int metricgroup__add_metric_sys_event_iter(struct pmu_event *pe,
10731073

10741074
ret = add_metric(d->metric_list, pe, d->metric_no_group, &m, NULL, d->ids);
10751075
if (ret)
1076-
return ret;
1076+
goto out;
10771077

10781078
ret = resolve_metric(d->metric_no_group,
10791079
d->metric_list, NULL, d->ids);
10801080
if (ret)
1081-
return ret;
1081+
goto out;
10821082

10831083
*(d->has_match) = true;
10841084

1085-
return *d->ret;
1085+
out:
1086+
*(d->ret) = ret;
1087+
return ret;
10861088
}
10871089

10881090
static int metricgroup__add_metric(const char *metric, bool metric_no_group,

0 commit comments

Comments
 (0)