forked from Minki/linux
perf tools fixes for v5.13: 6th batch
- 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. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCYM4gswAKCRCyPKLppCJ+ J/iZAP9xGK0IMWv8UI9bD3Npmy/nswU6+aCuRQTHBTceiu1MDAD/a0LhcBVVbXdC Y60AZbUg0vlOB14GbURACIuW3kh/Ng8= =vzwg -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
913ec3c22e
@ -863,8 +863,7 @@ __SYSCALL(__NR_process_madvise, sys_process_madvise)
|
||||
__SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2)
|
||||
#define __NR_mount_setattr 442
|
||||
__SYSCALL(__NR_mount_setattr, sys_mount_setattr)
|
||||
#define __NR_quotactl_path 443
|
||||
__SYSCALL(__NR_quotactl_path, sys_quotactl_path)
|
||||
/* 443 is reserved for quotactl_path */
|
||||
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
__SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset)
|
||||
|
@ -289,6 +289,9 @@ struct sockaddr_in {
|
||||
/* Address indicating an error return. */
|
||||
#define INADDR_NONE ((unsigned long int) 0xffffffff)
|
||||
|
||||
/* Dummy address for src of ICMP replies if no real address is set (RFC7600). */
|
||||
#define INADDR_DUMMY ((unsigned long int) 0xc0000008)
|
||||
|
||||
/* Network number for local host loopback. */
|
||||
#define IN_LOOPBACKNET 127
|
||||
|
||||
|
@ -11,9 +11,9 @@ compare_number()
|
||||
second_num=$2
|
||||
|
||||
# upper bound is first_num * 110%
|
||||
upper=$(( $first_num + $first_num / 10 ))
|
||||
upper=$(expr $first_num + $first_num / 10 )
|
||||
# lower bound is first_num * 90%
|
||||
lower=$(( $first_num - $first_num / 10 ))
|
||||
lower=$(expr $first_num - $first_num / 10 )
|
||||
|
||||
if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
|
||||
echo "The difference between $first_num and $second_num are greater than 10%."
|
||||
|
@ -438,6 +438,4 @@ extern int __sys_socketpair(int family, int type, int protocol,
|
||||
int __user *usockvec);
|
||||
extern int __sys_shutdown_sock(struct socket *sock, int how);
|
||||
extern int __sys_shutdown(int fd, int how);
|
||||
|
||||
extern struct ns_common *get_net_ns(struct ns_common *ns);
|
||||
#endif /* _LINUX_SOCKET_H */
|
||||
|
@ -776,10 +776,10 @@ static int machine__process_ksymbol_register(struct machine *machine,
|
||||
if (dso) {
|
||||
dso->kernel = DSO_SPACE__KERNEL;
|
||||
map = map__new2(0, dso);
|
||||
dso__put(dso);
|
||||
}
|
||||
|
||||
if (!dso || !map) {
|
||||
dso__put(dso);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -792,6 +792,7 @@ static int machine__process_ksymbol_register(struct machine *machine,
|
||||
map->start = event->ksymbol.addr;
|
||||
map->end = map->start + event->ksymbol.len;
|
||||
maps__insert(&machine->kmaps, map);
|
||||
map__put(map);
|
||||
dso__set_loaded(dso);
|
||||
|
||||
if (is_bpf_image(event->ksymbol.name)) {
|
||||
|
@ -162,10 +162,10 @@ static bool contains_event(struct evsel **metric_events, int num_events,
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool evsel_same_pmu(struct evsel *ev1, struct evsel *ev2)
|
||||
static bool evsel_same_pmu_or_none(struct evsel *ev1, struct evsel *ev2)
|
||||
{
|
||||
if (!ev1->pmu_name || !ev2->pmu_name)
|
||||
return false;
|
||||
return true;
|
||||
|
||||
return !strcmp(ev1->pmu_name, ev2->pmu_name);
|
||||
}
|
||||
@ -288,7 +288,7 @@ static struct evsel *find_evsel_group(struct evlist *perf_evlist,
|
||||
*/
|
||||
if (!has_constraint &&
|
||||
ev->leader != metric_events[i]->leader &&
|
||||
evsel_same_pmu(ev->leader, metric_events[i]->leader))
|
||||
evsel_same_pmu_or_none(ev->leader, metric_events[i]->leader))
|
||||
break;
|
||||
if (!strcmp(metric_events[i]->name, ev->name)) {
|
||||
set_bit(ev->idx, evlist_used);
|
||||
@ -1073,16 +1073,18 @@ static int metricgroup__add_metric_sys_event_iter(struct pmu_event *pe,
|
||||
|
||||
ret = add_metric(d->metric_list, pe, d->metric_no_group, &m, NULL, d->ids);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out;
|
||||
|
||||
ret = resolve_metric(d->metric_no_group,
|
||||
d->metric_list, NULL, d->ids);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out;
|
||||
|
||||
*(d->has_match) = true;
|
||||
|
||||
return *d->ret;
|
||||
out:
|
||||
*(d->ret) = ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int metricgroup__add_metric(const char *metric, bool metric_no_group,
|
||||
|
Loading…
Reference in New Issue
Block a user