Commit 913ec3c2 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'perf-tools-fixes-for-v5.13-2021-06-19' of...

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
parents d9403d30 1792a59e
...@@ -863,8 +863,7 @@ __SYSCALL(__NR_process_madvise, sys_process_madvise) ...@@ -863,8 +863,7 @@ __SYSCALL(__NR_process_madvise, sys_process_madvise)
__SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2) __SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2)
#define __NR_mount_setattr 442 #define __NR_mount_setattr 442
__SYSCALL(__NR_mount_setattr, sys_mount_setattr) __SYSCALL(__NR_mount_setattr, sys_mount_setattr)
#define __NR_quotactl_path 443 /* 443 is reserved for quotactl_path */
__SYSCALL(__NR_quotactl_path, sys_quotactl_path)
#define __NR_landlock_create_ruleset 444 #define __NR_landlock_create_ruleset 444
__SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset) __SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset)
......
...@@ -289,6 +289,9 @@ struct sockaddr_in { ...@@ -289,6 +289,9 @@ struct sockaddr_in {
/* Address indicating an error return. */ /* Address indicating an error return. */
#define INADDR_NONE ((unsigned long int) 0xffffffff) #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. */ /* Network number for local host loopback. */
#define IN_LOOPBACKNET 127 #define IN_LOOPBACKNET 127
......
...@@ -11,9 +11,9 @@ compare_number() ...@@ -11,9 +11,9 @@ compare_number()
second_num=$2 second_num=$2
# upper bound is first_num * 110% # 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 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 if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
echo "The difference between $first_num and $second_num are greater than 10%." 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, ...@@ -438,6 +438,4 @@ extern int __sys_socketpair(int family, int type, int protocol,
int __user *usockvec); int __user *usockvec);
extern int __sys_shutdown_sock(struct socket *sock, int how); extern int __sys_shutdown_sock(struct socket *sock, int how);
extern int __sys_shutdown(int fd, 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 */ #endif /* _LINUX_SOCKET_H */
...@@ -776,10 +776,10 @@ static int machine__process_ksymbol_register(struct machine *machine, ...@@ -776,10 +776,10 @@ static int machine__process_ksymbol_register(struct machine *machine,
if (dso) { if (dso) {
dso->kernel = DSO_SPACE__KERNEL; dso->kernel = DSO_SPACE__KERNEL;
map = map__new2(0, dso); map = map__new2(0, dso);
dso__put(dso);
} }
if (!dso || !map) { if (!dso || !map) {
dso__put(dso);
return -ENOMEM; return -ENOMEM;
} }
...@@ -792,6 +792,7 @@ static int machine__process_ksymbol_register(struct machine *machine, ...@@ -792,6 +792,7 @@ static int machine__process_ksymbol_register(struct machine *machine,
map->start = event->ksymbol.addr; map->start = event->ksymbol.addr;
map->end = map->start + event->ksymbol.len; map->end = map->start + event->ksymbol.len;
maps__insert(&machine->kmaps, map); maps__insert(&machine->kmaps, map);
map__put(map);
dso__set_loaded(dso); dso__set_loaded(dso);
if (is_bpf_image(event->ksymbol.name)) { if (is_bpf_image(event->ksymbol.name)) {
......
...@@ -162,10 +162,10 @@ static bool contains_event(struct evsel **metric_events, int num_events, ...@@ -162,10 +162,10 @@ static bool contains_event(struct evsel **metric_events, int num_events,
return false; 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) if (!ev1->pmu_name || !ev2->pmu_name)
return false; return true;
return !strcmp(ev1->pmu_name, ev2->pmu_name); return !strcmp(ev1->pmu_name, ev2->pmu_name);
} }
...@@ -288,7 +288,7 @@ static struct evsel *find_evsel_group(struct evlist *perf_evlist, ...@@ -288,7 +288,7 @@ static struct evsel *find_evsel_group(struct evlist *perf_evlist,
*/ */
if (!has_constraint && if (!has_constraint &&
ev->leader != metric_events[i]->leader && 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; break;
if (!strcmp(metric_events[i]->name, ev->name)) { if (!strcmp(metric_events[i]->name, ev->name)) {
set_bit(ev->idx, evlist_used); set_bit(ev->idx, evlist_used);
...@@ -1073,16 +1073,18 @@ static int metricgroup__add_metric_sys_event_iter(struct pmu_event *pe, ...@@ -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); ret = add_metric(d->metric_list, pe, d->metric_no_group, &m, NULL, d->ids);
if (ret) if (ret)
return ret; goto out;
ret = resolve_metric(d->metric_no_group, ret = resolve_metric(d->metric_no_group,
d->metric_list, NULL, d->ids); d->metric_list, NULL, d->ids);
if (ret) if (ret)
return ret; goto out;
*(d->has_match) = true; *(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, static int metricgroup__add_metric(const char *metric, bool metric_no_group,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment