mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	bpf: Fix configuration-dependent BTF function references
These BTF functions are not available unconditionally, only reference them when they are available. Avoid the following build warnings: BTF .tmp_vmlinux1.btf.o btf_encoder__tag_kfunc: failed to find kfunc 'bpf_send_signal_task' in BTF btf_encoder__tag_kfuncs: failed to tag kfunc 'bpf_send_signal_task' NM .tmp_vmlinux1.syms KSYMS .tmp_vmlinux1.kallsyms.S AS .tmp_vmlinux1.kallsyms.o LD .tmp_vmlinux2 NM .tmp_vmlinux2.syms KSYMS .tmp_vmlinux2.kallsyms.S AS .tmp_vmlinux2.kallsyms.o LD vmlinux BTFIDS vmlinux WARN: resolve_btfids: unresolved symbol prog_test_ref_kfunc WARN: resolve_btfids: unresolved symbol bpf_crypto_ctx WARN: resolve_btfids: unresolved symbol bpf_send_signal_task WARN: resolve_btfids: unresolved symbol bpf_modify_return_test_tp WARN: resolve_btfids: unresolved symbol bpf_dynptr_from_xdp WARN: resolve_btfids: unresolved symbol bpf_dynptr_from_skb Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20241213-bpf-cond-ids-v1-1-881849997219@weissschuh.net
This commit is contained in:
		
							parent
							
								
									3d1af4bd84
								
							
						
					
					
						commit
						00a5acdbf3
					
				
					 2 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
					@ -3104,7 +3104,9 @@ BTF_ID_FLAGS(func, bpf_task_get_cgroup1, KF_ACQUIRE | KF_RCU | KF_RET_NULL)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL)
 | 
					BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_task_from_vpid, KF_ACQUIRE | KF_RET_NULL)
 | 
					BTF_ID_FLAGS(func, bpf_task_from_vpid, KF_ACQUIRE | KF_RET_NULL)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_throw)
 | 
					BTF_ID_FLAGS(func, bpf_throw)
 | 
				
			||||||
 | 
					#ifdef CONFIG_BPF_EVENTS
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_send_signal_task, KF_TRUSTED_ARGS)
 | 
					BTF_ID_FLAGS(func, bpf_send_signal_task, KF_TRUSTED_ARGS)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
BTF_KFUNCS_END(generic_btf_ids)
 | 
					BTF_KFUNCS_END(generic_btf_ids)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct btf_kfunc_id_set generic_kfunc_set = {
 | 
					static const struct btf_kfunc_id_set generic_kfunc_set = {
 | 
				
			||||||
| 
						 | 
					@ -3150,7 +3152,9 @@ BTF_ID_FLAGS(func, bpf_dynptr_is_null)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_dynptr_is_rdonly)
 | 
					BTF_ID_FLAGS(func, bpf_dynptr_is_rdonly)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_dynptr_size)
 | 
					BTF_ID_FLAGS(func, bpf_dynptr_size)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_dynptr_clone)
 | 
					BTF_ID_FLAGS(func, bpf_dynptr_clone)
 | 
				
			||||||
 | 
					#ifdef CONFIG_NET
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_modify_return_test_tp)
 | 
					BTF_ID_FLAGS(func, bpf_modify_return_test_tp)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_wq_init)
 | 
					BTF_ID_FLAGS(func, bpf_wq_init)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_wq_set_callback_impl)
 | 
					BTF_ID_FLAGS(func, bpf_wq_set_callback_impl)
 | 
				
			||||||
BTF_ID_FLAGS(func, bpf_wq_start)
 | 
					BTF_ID_FLAGS(func, bpf_wq_start)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5681,7 +5681,9 @@ static bool in_rcu_cs(struct bpf_verifier_env *env)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Once GCC supports btf_type_tag the following mechanism will be replaced with tag check */
 | 
					/* Once GCC supports btf_type_tag the following mechanism will be replaced with tag check */
 | 
				
			||||||
BTF_SET_START(rcu_protected_types)
 | 
					BTF_SET_START(rcu_protected_types)
 | 
				
			||||||
 | 
					#ifdef CONFIG_NET
 | 
				
			||||||
BTF_ID(struct, prog_test_ref_kfunc)
 | 
					BTF_ID(struct, prog_test_ref_kfunc)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef CONFIG_CGROUPS
 | 
					#ifdef CONFIG_CGROUPS
 | 
				
			||||||
BTF_ID(struct, cgroup)
 | 
					BTF_ID(struct, cgroup)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -5689,7 +5691,9 @@ BTF_ID(struct, cgroup)
 | 
				
			||||||
BTF_ID(struct, bpf_cpumask)
 | 
					BTF_ID(struct, bpf_cpumask)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
BTF_ID(struct, task_struct)
 | 
					BTF_ID(struct, task_struct)
 | 
				
			||||||
 | 
					#ifdef CONFIG_CRYPTO
 | 
				
			||||||
BTF_ID(struct, bpf_crypto_ctx)
 | 
					BTF_ID(struct, bpf_crypto_ctx)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
BTF_SET_END(rcu_protected_types)
 | 
					BTF_SET_END(rcu_protected_types)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool rcu_protected_object(const struct btf *btf, u32 btf_id)
 | 
					static bool rcu_protected_object(const struct btf *btf, u32 btf_id)
 | 
				
			||||||
| 
						 | 
					@ -11722,8 +11726,10 @@ BTF_ID(func, bpf_rdonly_cast)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_remove)
 | 
					BTF_ID(func, bpf_rbtree_remove)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_add_impl)
 | 
					BTF_ID(func, bpf_rbtree_add_impl)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_first)
 | 
					BTF_ID(func, bpf_rbtree_first)
 | 
				
			||||||
 | 
					#ifdef CONFIG_NET
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_from_skb)
 | 
					BTF_ID(func, bpf_dynptr_from_skb)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_from_xdp)
 | 
					BTF_ID(func, bpf_dynptr_from_xdp)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_slice)
 | 
					BTF_ID(func, bpf_dynptr_slice)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_slice_rdwr)
 | 
					BTF_ID(func, bpf_dynptr_slice_rdwr)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_clone)
 | 
					BTF_ID(func, bpf_dynptr_clone)
 | 
				
			||||||
| 
						 | 
					@ -11751,8 +11757,10 @@ BTF_ID(func, bpf_rcu_read_unlock)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_remove)
 | 
					BTF_ID(func, bpf_rbtree_remove)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_add_impl)
 | 
					BTF_ID(func, bpf_rbtree_add_impl)
 | 
				
			||||||
BTF_ID(func, bpf_rbtree_first)
 | 
					BTF_ID(func, bpf_rbtree_first)
 | 
				
			||||||
 | 
					#ifdef CONFIG_NET
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_from_skb)
 | 
					BTF_ID(func, bpf_dynptr_from_skb)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_from_xdp)
 | 
					BTF_ID(func, bpf_dynptr_from_xdp)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_slice)
 | 
					BTF_ID(func, bpf_dynptr_slice)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_slice_rdwr)
 | 
					BTF_ID(func, bpf_dynptr_slice_rdwr)
 | 
				
			||||||
BTF_ID(func, bpf_dynptr_clone)
 | 
					BTF_ID(func, bpf_dynptr_clone)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue