Patch "bpf: Add typecast to bpf helpers to help BTF generation" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    bpf: Add typecast to bpf helpers to help BTF generation

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     bpf-add-typecast-to-bpf-helpers-to-help-btf-generati.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e27bf3ca32518092a5b2bda8aeb568d268f75a76
Author: Alexei Starovoitov <ast@xxxxxxxxxx>
Date:   Tue Oct 15 20:24:56 2019 -0700

    bpf: Add typecast to bpf helpers to help BTF generation
    
    [ Upstream commit 7c6a469e3416fa23568c2395a3faa7dd6e376dcb ]
    
    When pahole converts dwarf to btf it emits only used types.
    Wrap existing bpf helper functions into typedef and use it in
    typecast to make gcc emits this type into dwarf.
    Then pahole will convert it to btf.
    The "btf_#name_of_helper" types will be used to figure out
    types of arguments of bpf helpers.
    The generated code before and after is the same.
    Only dwarf and btf sections are different.
    
    Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx>
    Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
    Acked-by: Andrii Nakryiko <andriin@xxxxxx>
    Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>
    Acked-by: Martin KaFai Lau <kafai@xxxxxx>
    Link: https://lore.kernel.org/bpf/20191016032505.2089704-3-ast@xxxxxxxxxx
    Stable-dep-of: 178c54666f9c ("bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/filter.h b/include/linux/filter.h
index 440014875acf4..11407e9e606db 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -479,10 +479,11 @@ static inline bool insn_is_zext(const struct bpf_insn *insn)
 #define BPF_CALL_x(x, name, ...)					       \
 	static __always_inline						       \
 	u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__));   \
+	typedef u64 (*btf_##name)(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \
 	u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__));	       \
 	u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__))	       \
 	{								       \
-		return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\
+		return ((btf_##name)____##name)(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\
 	}								       \
 	static __always_inline						       \
 	u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__))




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux