Re: [PATCH] perf tools: Fix /proc/kcore access on 32 bit systems

From: Arnaldo Carvalho de Melo
Date: Thu Oct 21 2021 - 08:54:18 EST


Em Thu, Oct 21, 2021 at 12:27:00PM +0100, James Clark escreveu:
> Because _LARGEFILE64_SOURCE is set in perf, file offset sizes can be
> 64 bits. If a workflow needs to open /proc/kcore on a 32 bit system
> (for example to decode Arm ETM kernel trace) then the size value will be
> wrapped to 32 bits in the function file_size() at this line:
>
> dso->data.file_size = st.st_size;
>
> Setting the file_size member to be u64 fixes the issue and allows
> /proc/kcore to be opened.

Thanks, applied.

- Arnaldo


> Reported-by: Denis Nikitin <denik@xxxxxxxxxxxx>
> Signed-off-by: James Clark <james.clark@xxxxxxx>
> ---
> tools/perf/util/dso.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> index 83723ba11dc8..011da3924fc1 100644
> --- a/tools/perf/util/dso.h
> +++ b/tools/perf/util/dso.h
> @@ -193,7 +193,7 @@ struct dso {
> int fd;
> int status;
> u32 status_seen;
> - size_t file_size;
> + u64 file_size;
> struct list_head open_entry;
> u64 debug_frame_offset;
> u64 eh_frame_hdr_offset;
> --
> 2.28.0

--

- Arnaldo