[PATCH] tools/perf: Fix bpf__probe to set bpf_prog_type type only if differs from the desired one

Athira Rajeev atrajeev at linux.vnet.ibm.com
Fri Aug 18 03:35:02 AEST 2023



> On 07-Aug-2023, at 11:07 AM, Sachin Sant <sachinp at linux.ibm.com> wrote:
> 
> 
> 
>> On 07-Aug-2023, at 10:22 AM, Athira Rajeev <atrajeev at linux.vnet.ibm.com> wrote:
>> 
>> The test "BPF prologue generation" fails as below:
>> 
>>  Writing event: p:perf_bpf_probe/func _text+10423200 f_mode=+20(%gpr3):x32 offset=%gpr4:s64 orig=%gpr5:s32
>>  In map_prologue, ntevs=1
>>  mapping[0]=0
>>  libbpf: prog 'bpf_func__null_lseek': BPF program load failed: Permission denied
>>  libbpf: prog 'bpf_func__null_lseek': -- BEGIN PROG LOAD LOG --
>>  btf_vmlinux is malformed
>>  reg type unsupported for arg#0 function bpf_func__null_lseek#5
>>  0: R1=ctx(off=0,imm=0) R10=fp0
>>  ;
>>  0: (57) r3 &= 2
>>  R3 !read_ok
>>  processed 1 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0
>>  -- END PROG LOAD LOG --
>>  libbpf: prog 'bpf_func__null_lseek': failed to load: -13
>>  libbpf: failed to load object '[bpf_prologue_test]'
>>  bpf: load objects failed: err=-13: (Permission denied)
>>  Failed to add events selected by BPF
>> 
>> This fails occurs after this commit:
>> commit d6e6286a12e7 ("libbpf: disassociate section handler
>> on explicit bpf_program__set_type() call")'
>> 
>> With this change, SEC_DEF handler libbpf which is determined
>> initially based on program's SEC() is set to NULL. The change
>> is made because sec_def is not valid when user sets the program
>> type with bpf_program__set_type function. This commit also fixed
>> bpf_prog_test_load() helper in selftests/bpf to force-set program
>> type only if it differs from the desired one.
>> 
>> The "bpf__probe" function in util/bpf-loader.c, also calls
>> bpf_program__set_type to set bpf_prog_type. Add similar fix in
>> here as well to avoid setting sec_def to NULL.
>> 
>> Reported-by: Sachin Sant <sachinp at linux.vnet.ibm.com>
>> Signed-off-by: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
>> ---
> 
> Thanks Athira for the fix.
> With this patch applied perf BPF prologue sub test works correctly.
> 
> 42: BPF filter                                                     :
> 42.1: Basic BPF filtering                                    : Ok
> 42.2: BPF pinning                                              : Ok
> 42.3: BPF prologue generation                          : Ok
> 
> Tested-by: Sachin Sant <sachinp at linux.ibm.com>
> 
> Can you please use the above mentioned id(without vnet) in the reported-by ?
> 
> - Sachin

Hi All,

Looking for review comments on this patch

Athira




More information about the Linuxppc-dev mailing list