lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YkRgFdWdW0HyqIno@krava>
Date:   Wed, 30 Mar 2022 15:50:13 +0200
From:   Jiri Olsa <olsajiri@...il.com>
To:     Shunsuke Nakamura <nakamura.shun@...itsu.com>
Cc:     peterz@...radead.org, mingo@...hat.com, acme@...nel.org,
        mark.rutland@....com, alexander.shishkin@...ux.intel.com,
        jolsa@...hat.com, namhyung@...nel.org,
        linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org
Subject: Re: [RFC PATCH v2 2/7] libperf: Move 'open_flags' from tools/perf to
 evsel::open_flags

On Fri, Mar 25, 2022 at 01:38:24PM +0900, Shunsuke Nakamura wrote:
> Move evsel::open_flags to perf_evsel::open_flags, so we can move
> the open_flags interface to libperf.
> 
> Signed-off-by: Shunsuke Nakamura <nakamura.shun@...itsu.com>
> ---
>  tools/lib/perf/evsel.c                  |  3 ++-
>  tools/lib/perf/include/internal/evsel.h |  2 ++
>  tools/perf/util/evsel.c                 | 16 +++++++++-------
>  tools/perf/util/evsel.h                 |  1 -
>  4 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c
> index 210ea7c06ce8..6640a333e6d9 100644
> --- a/tools/lib/perf/evsel.c
> +++ b/tools/lib/perf/evsel.c
> @@ -26,6 +26,7 @@ void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr,
>  	evsel->attr = *attr;
>  	evsel->idx  = idx;
>  	evsel->leader = evsel;
> +	evsel->open_flags = 0;
>  }
>  
>  struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr)
> @@ -158,7 +159,7 @@ int perf_evsel__open(struct perf_evsel *evsel, struct perf_cpu_map *cpus,
>  
>  			fd = sys_perf_event_open(&evsel->attr,
>  						 threads->map[thread].pid,
> -						 cpu, group_fd, 0);
> +						 cpu, group_fd, evsel->open_flags);

please keep this change just open_flags field move,
this change should go to later patch

jirka

>  
>  			if (fd < 0)
>  				return -errno;
> diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/include/internal/evsel.h
> index cfc9ebd7968e..37a99cf261b3 100644
> --- a/tools/lib/perf/include/internal/evsel.h
> +++ b/tools/lib/perf/include/internal/evsel.h
> @@ -51,6 +51,8 @@ struct perf_evsel {
>  	int			 nr_members;
>  	bool			 system_wide;
>  	int			 idx;
> +
> +	unsigned long		 open_flags;
>  };
>  
>  void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr,
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 22d3267ce294..52c34552ee76 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -1794,9 +1794,9 @@ static int __evsel__prepare_open(struct evsel *evsel, struct perf_cpu_map *cpus,
>  	    perf_evsel__alloc_fd(&evsel->core, perf_cpu_map__nr(cpus), nthreads) < 0)
>  		return -ENOMEM;
>  
> -	evsel->open_flags = PERF_FLAG_FD_CLOEXEC;
> +	evsel->core.open_flags = PERF_FLAG_FD_CLOEXEC;
>  	if (evsel->cgrp)
> -		evsel->open_flags |= PERF_FLAG_PID_CGROUP;
> +		evsel->core.open_flags |= PERF_FLAG_PID_CGROUP;
>  
>  	return 0;
>  }
> @@ -1814,7 +1814,7 @@ static void evsel__disable_missing_features(struct evsel *evsel)
>  		evsel->core.attr.clockid = 0;
>  	}
>  	if (perf_missing_features.cloexec)
> -		evsel->open_flags &= ~(unsigned long)PERF_FLAG_FD_CLOEXEC;
> +		evsel->core.open_flags &= ~(unsigned long)PERF_FLAG_FD_CLOEXEC;
>  	if (perf_missing_features.mmap2)
>  		evsel->core.attr.mmap2 = 0;
>  	if (evsel->pmu && evsel->pmu->missing_features.exclude_guest)
> @@ -1902,7 +1902,8 @@ bool evsel__detect_missing_features(struct evsel *evsel)
>  		perf_missing_features.clockid = true;
>  		pr_debug2_peo("switching off use_clockid\n");
>  		return true;
> -	} else if (!perf_missing_features.cloexec && (evsel->open_flags & PERF_FLAG_FD_CLOEXEC)) {
> +	} else if (!perf_missing_features.cloexec &&
> +		   (evsel->core.open_flags & PERF_FLAG_FD_CLOEXEC)) {
>  		perf_missing_features.cloexec = true;
>  		pr_debug2_peo("switching off cloexec flag\n");
>  		return true;
> @@ -2029,11 +2030,12 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  			test_attr__ready();
>  
>  			pr_debug2_peo("sys_perf_event_open: pid %d  cpu %d  group_fd %d  flags %#lx",
> -				pid, perf_cpu_map__cpu(cpus, idx).cpu, group_fd, evsel->open_flags);
> +				pid, perf_cpu_map__cpu(cpus, idx).cpu, group_fd,
> +				evsel->core.open_flags);
>  
>  			fd = sys_perf_event_open(&evsel->core.attr, pid,
>  						perf_cpu_map__cpu(cpus, idx).cpu,
> -						group_fd, evsel->open_flags);
> +						group_fd, evsel->core.open_flags);
>  
>  			FD(evsel, idx, thread) = fd;
>  
> @@ -2050,7 +2052,7 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  			if (unlikely(test_attr__enabled)) {
>  				test_attr__open(&evsel->core.attr, pid,
>  						perf_cpu_map__cpu(cpus, idx),
> -						fd, group_fd, evsel->open_flags);
> +						fd, group_fd, evsel->core.open_flags);
>  			}
>  
>  			pr_debug2_peo(" = %d\n", fd);
> diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> index 041b42d33bf5..8a545954eec7 100644
> --- a/tools/perf/util/evsel.h
> +++ b/tools/perf/util/evsel.h
> @@ -152,7 +152,6 @@ struct evsel {
>  		struct bperf_leader_bpf *leader_skel;
>  		struct bperf_follower_bpf *follower_skel;
>  	};
> -	unsigned long		open_flags;
>  	int			precise_ip_original;
>  
>  	/* for missing_features */
> -- 
> 2.25.1
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ