mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
perf header: Write bpf_prog (infos|btfs)_cnt to data file
[ Upstream commit85c894a80a] With commitf0d0f978f3("perf header: Don't write empty BPF/BTF info"), the write_bpf_( prog_info() | btf() ) functions exit without writing anything if env->bpf_prog.(infos| btfs)_cnt is zero. process_bpf_( prog_info() | btf() ), however, still expect a "count" value to exist in the data file. If btf information is empty, for example, process_bpf_btf will read garbage or some other data as the number of btf nodes in the data file. As a result, the data file will not be processed correctly. Instead, write the count to the data file and exit if it is zero. Fixes:f0d0f978f3("perf header: Don't write empty BPF/BTF info") Reviewed-by: Ian Rogers <irogers@google.com> Signed-off-by: Thomas Falcon <thomas.falcon@intel.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b610975006
commit
26527bd486
@@ -1022,12 +1022,9 @@ static int write_bpf_prog_info(struct feat_fd *ff,
|
||||
|
||||
down_read(&env->bpf_progs.lock);
|
||||
|
||||
if (env->bpf_progs.infos_cnt == 0)
|
||||
goto out;
|
||||
|
||||
ret = do_write(ff, &env->bpf_progs.infos_cnt,
|
||||
sizeof(env->bpf_progs.infos_cnt));
|
||||
if (ret < 0)
|
||||
if (ret < 0 || env->bpf_progs.infos_cnt == 0)
|
||||
goto out;
|
||||
|
||||
root = &env->bpf_progs.infos;
|
||||
@@ -1067,13 +1064,10 @@ static int write_bpf_btf(struct feat_fd *ff,
|
||||
|
||||
down_read(&env->bpf_progs.lock);
|
||||
|
||||
if (env->bpf_progs.btfs_cnt == 0)
|
||||
goto out;
|
||||
|
||||
ret = do_write(ff, &env->bpf_progs.btfs_cnt,
|
||||
sizeof(env->bpf_progs.btfs_cnt));
|
||||
|
||||
if (ret < 0)
|
||||
if (ret < 0 || env->bpf_progs.btfs_cnt == 0)
|
||||
goto out;
|
||||
|
||||
root = &env->bpf_progs.btfs;
|
||||
|
||||
Reference in New Issue
Block a user