mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "xujia (Q)" <xujia39@huawei.com>
To: Stanislav Fomichev <sdf@google.com>
Cc: <netdev@vger.kernel.org>, <bpf@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <ast@kernel.org>,
	<daniel@iogearbox.net>, <andrii@kernel.org>
Subject: Re: [PATCH bpf-next] bpf: fix bpf compile error caused by CONFIG_CGROUP_BPF
Date: Wed, 20 Jul 2022 15:25:34 +0800	[thread overview]
Message-ID: <1eec4e32-9136-0360-a547-7f99c0bfa6be@huawei.com> (raw)
In-Reply-To: <CAKH8qBuwm75KirLSrTh1jeYqDAn78Ki5sgiAY8y2G2OCsDJP5w@mail.gmail.com>

It is fixed, not warning again. Thank you very much!

在 2022/7/19 23:46, Stanislav Fomichev 写道:
> On Tue, Jul 19, 2022 at 1:49 AM Xu Jia <xujia39@huawei.com> wrote:
>> We failed to compile when CONFIG_BPF_LSM is enabled but CONFIG_CGROUP_BPF
>> is not set. The failings are shown as below:
>>
>> kernel/bpf/trampoline.o: in function `bpf_trampoline_link_cgroup_shim'
>> trampoline.c: undefined reference to `bpf_cgroup_atype_get'
>> kernel/bpf/bpf_lsm.o: In function `bpf_lsm_find_cgroup_shim':
>> bpf_lsm.c: undefined reference to `__cgroup_bpf_run_lsm_current'
>> bpf_lsm.c: undefined reference to `__cgroup_bpf_run_lsm_sock'
>> bpf_lsm.c: undefined reference to `__cgroup_bpf_run_lsm_socket'
>>
>> Fix them by protecting these functions with CONFIG_CGROUP_BPF.
> Should be fixed by the following?
>
> https://lore.kernel.org/bpf/20220714185404.3647772-1-sdf@google.com/
>
>> Fixes: 69fd337a975c ("bpf: per-cgroup lsm flavor")
>> Signed-off-by: Xu Jia <xujia39@huawei.com>
>> ---
>>   include/linux/bpf.h     | 12 +++++++++---
>>   include/linux/bpf_lsm.h | 10 ++++++----
>>   kernel/bpf/bpf_lsm.c    |  2 ++
>>   kernel/bpf/trampoline.c |  2 ++
>>   4 files changed, 19 insertions(+), 7 deletions(-)
>>
>> diff --git a/include/linux/bpf.h b/include/linux/bpf.h
>> index 2b21f2a3452f..add8895c02cc 100644
>> --- a/include/linux/bpf.h
>> +++ b/include/linux/bpf.h
>> @@ -1255,9 +1255,7 @@ struct bpf_dummy_ops {
>>   int bpf_struct_ops_test_run(struct bpf_prog *prog, const union bpf_attr *kattr,
>>                              union bpf_attr __user *uattr);
>>   #endif
>> -int bpf_trampoline_link_cgroup_shim(struct bpf_prog *prog,
>> -                                   int cgroup_atype);
>> -void bpf_trampoline_unlink_cgroup_shim(struct bpf_prog *prog);
>> +
>>   #else
>>   static inline const struct bpf_struct_ops *bpf_struct_ops_find(u32 type_id)
>>   {
>> @@ -1281,6 +1279,14 @@ static inline int bpf_struct_ops_map_sys_lookup_elem(struct bpf_map *map,
>>   {
>>          return -EINVAL;
>>   }
>> +#endif
>> +
>> +#if defined(CONFIG_BPF_JIT) && defined(CONFIG_BPF_SYSCALL) && \
>> +    defined(CONFIG_CGROUP_BPF)
>> +int bpf_trampoline_link_cgroup_shim(struct bpf_prog *prog,
>> +                                   int cgroup_atype);
>> +void bpf_trampoline_unlink_cgroup_shim(struct bpf_prog *prog);
>> +#else
>>   static inline int bpf_trampoline_link_cgroup_shim(struct bpf_prog *prog,
>>                                                    int cgroup_atype)
>>   {
>> diff --git a/include/linux/bpf_lsm.h b/include/linux/bpf_lsm.h
>> index 4bcf76a9bb06..bed45a0c8a9c 100644
>> --- a/include/linux/bpf_lsm.h
>> +++ b/include/linux/bpf_lsm.h
>> @@ -42,8 +42,6 @@ extern const struct bpf_func_proto bpf_inode_storage_get_proto;
>>   extern const struct bpf_func_proto bpf_inode_storage_delete_proto;
>>   void bpf_inode_storage_free(struct inode *inode);
>>
>> -void bpf_lsm_find_cgroup_shim(const struct bpf_prog *prog, bpf_func_t *bpf_func);
>> -
>>   #else /* !CONFIG_BPF_LSM */
>>
>>   static inline bool bpf_lsm_is_sleepable_hook(u32 btf_id)
>> @@ -67,11 +65,15 @@ static inline void bpf_inode_storage_free(struct inode *inode)
>>   {
>>   }
>>
>> +#endif /* CONFIG_BPF_LSM */
>> +
>> +#if defined(CONFIG_BPF_LSM) && defined(CONFIG_BPF_CGROUP)
>> +void bpf_lsm_find_cgroup_shim(const struct bpf_prog *prog, bpf_func_t *bpf_func);
>> +#else
>>   static inline void bpf_lsm_find_cgroup_shim(const struct bpf_prog *prog,
>>                                             bpf_func_t *bpf_func)
>>   {
>>   }
>> -
>> -#endif /* CONFIG_BPF_LSM */
>> +#endif
>>
>>   #endif /* _LINUX_BPF_LSM_H */
>> diff --git a/kernel/bpf/bpf_lsm.c b/kernel/bpf/bpf_lsm.c
>> index d469b7f3deef..29527828b38b 100644
>> --- a/kernel/bpf/bpf_lsm.c
>> +++ b/kernel/bpf/bpf_lsm.c
>> @@ -63,6 +63,7 @@ BTF_ID(func, bpf_lsm_socket_post_create)
>>   BTF_ID(func, bpf_lsm_socket_socketpair)
>>   BTF_SET_END(bpf_lsm_unlocked_sockopt_hooks)
>>
>> +#ifdef CONFIG_BPF_CGROUP
>>   void bpf_lsm_find_cgroup_shim(const struct bpf_prog *prog,
>>                               bpf_func_t *bpf_func)
>>   {
>> @@ -86,6 +87,7 @@ void bpf_lsm_find_cgroup_shim(const struct bpf_prog *prog,
>>   #endif
>>                  *bpf_func = __cgroup_bpf_run_lsm_current;
>>   }
>> +#endif /* CONFIG_BPF_CGROUP */
>>
>>   int bpf_lsm_verify_prog(struct bpf_verifier_log *vlog,
>>                          const struct bpf_prog *prog)
>> diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c
>> index 6cd226584c33..127924711935 100644
>> --- a/kernel/bpf/trampoline.c
>> +++ b/kernel/bpf/trampoline.c
>> @@ -525,6 +525,7 @@ static const struct bpf_link_ops bpf_shim_tramp_link_lops = {
>>          .dealloc = bpf_shim_tramp_link_dealloc,
>>   };
>>
>> +#ifdef CONFIG_CGROUP_BPF
>>   static struct bpf_shim_tramp_link *cgroup_shim_alloc(const struct bpf_prog *prog,
>>                                                       bpf_func_t bpf_func,
>>                                                       int cgroup_atype)
>> @@ -668,6 +669,7 @@ void bpf_trampoline_unlink_cgroup_shim(struct bpf_prog *prog)
>>
>>          bpf_trampoline_put(tr); /* bpf_trampoline_lookup above */
>>   }
>> +#endif /* CONFIG_CGROUP_BPF */
>>   #endif
>>
>>   struct bpf_trampoline *bpf_trampoline_get(u64 key,
>> --
>> 2.25.1
>>
> .

  reply	other threads:[~2022-07-20  7:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-19  9:01 Xu Jia
2022-07-19 15:46 ` Stanislav Fomichev
2022-07-20  7:25   ` xujia (Q) [this message]
2022-07-20  7:16 ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1eec4e32-9136-0360-a547-7f99c0bfa6be@huawei.com \
    --to=xujia39@huawei.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sdf@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®