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

Changed files
+16 -13
tools
include
uapi
asm-generic
linux
perf
tests
trace
beauty
include
linux
util
+1 -2
tools/include/uapi/asm-generic/unistd.h
··· 863 863 __SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2) 864 864 #define __NR_mount_setattr 442 865 865 __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 */ 868 867 869 868 #define __NR_landlock_create_ruleset 444 870 869 __SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset)
+3
tools/include/uapi/linux/in.h
··· 289 289 /* Address indicating an error return. */ 290 290 #define INADDR_NONE ((unsigned long int) 0xffffffff) 291 291 292 + /* Dummy address for src of ICMP replies if no real address is set (RFC7600). */ 293 + #define INADDR_DUMMY ((unsigned long int) 0xc0000008) 294 + 292 295 /* Network number for local host loopback. */ 293 296 #define IN_LOOPBACKNET 127 294 297
+2 -2
tools/perf/tests/shell/stat_bpf_counters.sh
··· 11 11 second_num=$2 12 12 13 13 # upper bound is first_num * 110% 14 - upper=$(( $first_num + $first_num / 10 )) 14 + upper=$(expr $first_num + $first_num / 10 ) 15 15 # lower bound is first_num * 90% 16 - lower=$(( $first_num - $first_num / 10 )) 16 + lower=$(expr $first_num - $first_num / 10 ) 17 17 18 18 if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then 19 19 echo "The difference between $first_num and $second_num are greater than 10%."
-2
tools/perf/trace/beauty/include/linux/socket.h
··· 438 438 int __user *usockvec); 439 439 extern int __sys_shutdown_sock(struct socket *sock, int how); 440 440 extern int __sys_shutdown(int fd, int how); 441 - 442 - extern struct ns_common *get_net_ns(struct ns_common *ns); 443 441 #endif /* _LINUX_SOCKET_H */
+2 -1
tools/perf/util/machine.c
··· 776 776 if (dso) { 777 777 dso->kernel = DSO_SPACE__KERNEL; 778 778 map = map__new2(0, dso); 779 + dso__put(dso); 779 780 } 780 781 781 782 if (!dso || !map) { 782 - dso__put(dso); 783 783 return -ENOMEM; 784 784 } 785 785 ··· 792 792 map->start = event->ksymbol.addr; 793 793 map->end = map->start + event->ksymbol.len; 794 794 maps__insert(&machine->kmaps, map); 795 + map__put(map); 795 796 dso__set_loaded(dso); 796 797 797 798 if (is_bpf_image(event->ksymbol.name)) {
+8 -6
tools/perf/util/metricgroup.c
··· 162 162 return false; 163 163 } 164 164 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) 166 166 { 167 167 if (!ev1->pmu_name || !ev2->pmu_name) 168 - return false; 168 + return true; 169 169 170 170 return !strcmp(ev1->pmu_name, ev2->pmu_name); 171 171 } ··· 288 288 */ 289 289 if (!has_constraint && 290 290 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)) 292 292 break; 293 293 if (!strcmp(metric_events[i]->name, ev->name)) { 294 294 set_bit(ev->idx, evlist_used); ··· 1073 1073 1074 1074 ret = add_metric(d->metric_list, pe, d->metric_no_group, &m, NULL, d->ids); 1075 1075 if (ret) 1076 - return ret; 1076 + goto out; 1077 1077 1078 1078 ret = resolve_metric(d->metric_no_group, 1079 1079 d->metric_list, NULL, d->ids); 1080 1080 if (ret) 1081 - return ret; 1081 + goto out; 1082 1082 1083 1083 *(d->has_match) = true; 1084 1084 1085 - return *d->ret; 1085 + out: 1086 + *(d->ret) = ret; 1087 + return ret; 1086 1088 } 1087 1089 1088 1090 static int metricgroup__add_metric(const char *metric, bool metric_no_group,