BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next] bpf: fix compilation error without CGROUPS
@ 2023-10-31 15:49 Matthieu Baerts
  2023-10-31 17:05 ` Jiri Olsa
  0 siblings, 1 reply; 6+ messages in thread
From: Matthieu Baerts @ 2023-10-31 15:49 UTC (permalink / raw)
  To: Yonghong Song, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, John Fastabend,
	KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa, Chuyi Zhou,
	Tejun Heo
  Cc: bpf, linux-kernel, mptcp, kernel test robot, Matthieu Baerts

Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
possible to build the kernel without CONFIG_CGROUPS:

  kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
  kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
    919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
        |              ^~~~~~~~~~~~~~~~~~~
  kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
  kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
    919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
        |                                    ^~~~~~~~~~~~~~~~~~~~~~
  kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
    927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
        |                                                            ^~~~~~
  kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
    930 |         css_task_iter_start(css, flags, kit->css_it);
        |         ^~~~~~~~~~~~~~~~~~~
        |         task_seq_start
  kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
  kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
    940 |         return css_task_iter_next(kit->css_it);
        |                ^~~~~~~~~~~~~~~~~~
        |                class_dev_iter_next
  kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
    940 |         return css_task_iter_next(kit->css_it);
        |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
  kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
    949 |         css_task_iter_end(kit->css_it);
        |         ^~~~~~~~~~~~~~~~~

This patch simply surrounds with a #ifdef the new code requiring CGroups
support. It seems enough for the compiler and this is similar to
bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
been added in kernel/bpf/helpers.c and in the selftests.

Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
---
 kernel/bpf/task_iter.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/bpf/task_iter.c b/kernel/bpf/task_iter.c
index 59e747938bdb..e0d313114a5b 100644
--- a/kernel/bpf/task_iter.c
+++ b/kernel/bpf/task_iter.c
@@ -894,6 +894,8 @@ __bpf_kfunc void bpf_iter_task_vma_destroy(struct bpf_iter_task_vma *it)
 
 __diag_pop();
 
+#ifdef CONFIG_CGROUPS
+
 struct bpf_iter_css_task {
 	__u64 __opaque[1];
 } __attribute__((aligned(8)));
@@ -952,6 +954,8 @@ __bpf_kfunc void bpf_iter_css_task_destroy(struct bpf_iter_css_task *it)
 
 __diag_pop();
 
+#endif /* CONFIG_CGROUPS */
+
 struct bpf_iter_task {
 	__u64 __opaque[3];
 } __attribute__((aligned(8)));

---
base-commit: f1c73396133cb3d913e2075298005644ee8dfade
change-id: 20231031-bpf-compil-err-css-056f3db04860

Best regards,
-- 
Matthieu Baerts <matttbe@kernel.org>


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next] bpf: fix compilation error without CGROUPS
  2023-10-31 15:49 [PATCH bpf-next] bpf: fix compilation error without CGROUPS Matthieu Baerts
@ 2023-10-31 17:05 ` Jiri Olsa
  2023-11-01  3:54   ` Alexei Starovoitov
  0 siblings, 1 reply; 6+ messages in thread
From: Jiri Olsa @ 2023-10-31 17:05 UTC (permalink / raw)
  To: Matthieu Baerts
  Cc: Yonghong Song, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, John Fastabend,
	KP Singh, Stanislav Fomichev, Hao Luo, Chuyi Zhou, Tejun Heo, bpf,
	linux-kernel, mptcp, kernel test robot

On Tue, Oct 31, 2023 at 04:49:34PM +0100, Matthieu Baerts wrote:
> Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
> possible to build the kernel without CONFIG_CGROUPS:
> 
>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
>   kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
>         |              ^~~~~~~~~~~~~~~~~~~
>   kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
>   kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
>         |                                    ^~~~~~~~~~~~~~~~~~~~~~
>   kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
>     927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
>         |                                                            ^~~~~~
>   kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
>     930 |         css_task_iter_start(css, flags, kit->css_it);
>         |         ^~~~~~~~~~~~~~~~~~~
>         |         task_seq_start
>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
>   kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
>     940 |         return css_task_iter_next(kit->css_it);
>         |                ^~~~~~~~~~~~~~~~~~
>         |                class_dev_iter_next
>   kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
>     940 |         return css_task_iter_next(kit->css_it);
>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
>   kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
>     949 |         css_task_iter_end(kit->css_it);
>         |         ^~~~~~~~~~~~~~~~~
> 
> This patch simply surrounds with a #ifdef the new code requiring CGroups
> support. It seems enough for the compiler and this is similar to
> bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
> been added in kernel/bpf/helpers.c and in the selftests.
> 
> Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
> Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
> Signed-off-by: Matthieu Baerts <matttbe@kernel.org>

Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>

jirka

> ---
>  kernel/bpf/task_iter.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/kernel/bpf/task_iter.c b/kernel/bpf/task_iter.c
> index 59e747938bdb..e0d313114a5b 100644
> --- a/kernel/bpf/task_iter.c
> +++ b/kernel/bpf/task_iter.c
> @@ -894,6 +894,8 @@ __bpf_kfunc void bpf_iter_task_vma_destroy(struct bpf_iter_task_vma *it)
>  
>  __diag_pop();
>  
> +#ifdef CONFIG_CGROUPS
> +
>  struct bpf_iter_css_task {
>  	__u64 __opaque[1];
>  } __attribute__((aligned(8)));
> @@ -952,6 +954,8 @@ __bpf_kfunc void bpf_iter_css_task_destroy(struct bpf_iter_css_task *it)
>  
>  __diag_pop();
>  
> +#endif /* CONFIG_CGROUPS */
> +
>  struct bpf_iter_task {
>  	__u64 __opaque[3];
>  } __attribute__((aligned(8)));
> 
> ---
> base-commit: f1c73396133cb3d913e2075298005644ee8dfade
> change-id: 20231031-bpf-compil-err-css-056f3db04860
> 
> Best regards,
> -- 
> Matthieu Baerts <matttbe@kernel.org>
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next] bpf: fix compilation error without CGROUPS
  2023-10-31 17:05 ` Jiri Olsa
@ 2023-11-01  3:54   ` Alexei Starovoitov
  2023-11-01  7:25     ` Jiri Olsa
  0 siblings, 1 reply; 6+ messages in thread
From: Alexei Starovoitov @ 2023-11-01  3:54 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Matthieu Baerts, Yonghong Song, Alexei Starovoitov,
	Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Chuyi Zhou,
	Tejun Heo, bpf, LKML, MPTCP Upstream, kernel test robot

On Tue, Oct 31, 2023 at 10:05 AM Jiri Olsa <olsajiri@gmail.com> wrote:
>
> On Tue, Oct 31, 2023 at 04:49:34PM +0100, Matthieu Baerts wrote:
> > Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
> > possible to build the kernel without CONFIG_CGROUPS:
> >
> >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
> >   kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
> >     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> >         |              ^~~~~~~~~~~~~~~~~~~
> >   kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
> >   kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
> >     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> >         |                                    ^~~~~~~~~~~~~~~~~~~~~~
> >   kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
> >     927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
> >         |                                                            ^~~~~~
> >   kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
> >     930 |         css_task_iter_start(css, flags, kit->css_it);
> >         |         ^~~~~~~~~~~~~~~~~~~
> >         |         task_seq_start
> >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
> >   kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
> >     940 |         return css_task_iter_next(kit->css_it);
> >         |                ^~~~~~~~~~~~~~~~~~
> >         |                class_dev_iter_next
> >   kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
> >     940 |         return css_task_iter_next(kit->css_it);
> >         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
> >   kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
> >     949 |         css_task_iter_end(kit->css_it);
> >         |         ^~~~~~~~~~~~~~~~~
> >
> > This patch simply surrounds with a #ifdef the new code requiring CGroups
> > support. It seems enough for the compiler and this is similar to
> > bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
> > been added in kernel/bpf/helpers.c and in the selftests.
> >
> > Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
> > Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
> > Reported-by: kernel test robot <lkp@intel.com>
> > Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
> > Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
>
> Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>

I believe this patch has the same issue as Arnd's patch:
https://lore.kernel.org/all/CAADnVQL-zoFPPOVu3nM981gKxRu7Q3G3LTRsKstJEeahpoR1RQ@mail.gmail.com/

I'd like to merge the fix asap. Please make it a complete fix.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next] bpf: fix compilation error without CGROUPS
  2023-11-01  3:54   ` Alexei Starovoitov
@ 2023-11-01  7:25     ` Jiri Olsa
  2023-11-01  8:25       ` Matthieu Baerts
  0 siblings, 1 reply; 6+ messages in thread
From: Jiri Olsa @ 2023-11-01  7:25 UTC (permalink / raw)
  To: Alexei Starovoitov
  Cc: Jiri Olsa, Matthieu Baerts, Yonghong Song, Alexei Starovoitov,
	Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Chuyi Zhou,
	Tejun Heo, bpf, LKML, MPTCP Upstream, kernel test robot

On Tue, Oct 31, 2023 at 08:54:56PM -0700, Alexei Starovoitov wrote:
> On Tue, Oct 31, 2023 at 10:05 AM Jiri Olsa <olsajiri@gmail.com> wrote:
> >
> > On Tue, Oct 31, 2023 at 04:49:34PM +0100, Matthieu Baerts wrote:
> > > Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
> > > possible to build the kernel without CONFIG_CGROUPS:
> > >
> > >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
> > >   kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
> > >     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> > >         |              ^~~~~~~~~~~~~~~~~~~
> > >   kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
> > >   kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
> > >     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> > >         |                                    ^~~~~~~~~~~~~~~~~~~~~~
> > >   kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
> > >     927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
> > >         |                                                            ^~~~~~
> > >   kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
> > >     930 |         css_task_iter_start(css, flags, kit->css_it);
> > >         |         ^~~~~~~~~~~~~~~~~~~
> > >         |         task_seq_start
> > >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
> > >   kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
> > >     940 |         return css_task_iter_next(kit->css_it);
> > >         |                ^~~~~~~~~~~~~~~~~~
> > >         |                class_dev_iter_next
> > >   kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
> > >     940 |         return css_task_iter_next(kit->css_it);
> > >         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
> > >   kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
> > >     949 |         css_task_iter_end(kit->css_it);
> > >         |         ^~~~~~~~~~~~~~~~~
> > >
> > > This patch simply surrounds with a #ifdef the new code requiring CGroups
> > > support. It seems enough for the compiler and this is similar to
> > > bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
> > > been added in kernel/bpf/helpers.c and in the selftests.
> > >
> > > Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
> > > Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
> > > Reported-by: kernel test robot <lkp@intel.com>
> > > Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
> > > Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
> >
> > Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>
> 
> I believe this patch has the same issue as Arnd's patch:
> https://lore.kernel.org/all/CAADnVQL-zoFPPOVu3nM981gKxRu7Q3G3LTRsKstJEeahpoR1RQ@mail.gmail.com/
> 
> I'd like to merge the fix asap. Please make it a complete fix.

ugh, it won't fail the build, it just warns.. I think we should
fail the build in that case, I'll check

jirka

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next] bpf: fix compilation error without CGROUPS
  2023-11-01  7:25     ` Jiri Olsa
@ 2023-11-01  8:25       ` Matthieu Baerts
  2023-11-01 12:53         ` Jiri Olsa
  0 siblings, 1 reply; 6+ messages in thread
From: Matthieu Baerts @ 2023-11-01  8:25 UTC (permalink / raw)
  To: Jiri Olsa, Alexei Starovoitov
  Cc: Yonghong Song, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, John Fastabend,
	KP Singh, Stanislav Fomichev, Hao Luo, Chuyi Zhou, Tejun Heo, bpf,
	LKML, MPTCP Upstream, kernel test robot

Hi Jirka, Alexei,

On 01/11/2023 08:25, Jiri Olsa wrote:
> On Tue, Oct 31, 2023 at 08:54:56PM -0700, Alexei Starovoitov wrote:
>> On Tue, Oct 31, 2023 at 10:05 AM Jiri Olsa <olsajiri@gmail.com> wrote:
>>>
>>> On Tue, Oct 31, 2023 at 04:49:34PM +0100, Matthieu Baerts wrote:
>>>> Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
>>>> possible to build the kernel without CONFIG_CGROUPS:
>>>>
>>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
>>>>   kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
>>>>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
>>>>         |              ^~~~~~~~~~~~~~~~~~~
>>>>   kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
>>>>   kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
>>>>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
>>>>         |                                    ^~~~~~~~~~~~~~~~~~~~~~
>>>>   kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
>>>>     927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
>>>>         |                                                            ^~~~~~
>>>>   kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
>>>>     930 |         css_task_iter_start(css, flags, kit->css_it);
>>>>         |         ^~~~~~~~~~~~~~~~~~~
>>>>         |         task_seq_start
>>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
>>>>   kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
>>>>     940 |         return css_task_iter_next(kit->css_it);
>>>>         |                ^~~~~~~~~~~~~~~~~~
>>>>         |                class_dev_iter_next
>>>>   kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
>>>>     940 |         return css_task_iter_next(kit->css_it);
>>>>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
>>>>   kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
>>>>     949 |         css_task_iter_end(kit->css_it);
>>>>         |         ^~~~~~~~~~~~~~~~~
>>>>
>>>> This patch simply surrounds with a #ifdef the new code requiring CGroups
>>>> support. It seems enough for the compiler and this is similar to
>>>> bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
>>>> been added in kernel/bpf/helpers.c and in the selftests.
>>>>
>>>> Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
>>>> Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>> Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
>>>> Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
>>>
>>> Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>
>>
>> I believe this patch has the same issue as Arnd's patch:
>> https://lore.kernel.org/all/CAADnVQL-zoFPPOVu3nM981gKxRu7Q3G3LTRsKstJEeahpoR1RQ@mail.gmail.com/

@Alexei: Arf, sorry, I didn't find this patch when searching for
"9c66dc94b62a" on lore. I don't know why I didn't search for the commit
title as usual...

>> I'd like to merge the fix asap. Please make it a complete fix.
> 
> ugh, it won't fail the build, it just warns.. I think we should
> fail the build in that case, I'll check

@Jirka: Thank you for checking that! Please tell me if you want me to
send a v2 or if you prefer to do that. I don't mind if you prefer to
send your own patches, as long as there is a fix for that at the end :)

Note that if a warning is emitted for these new bpf_iter_css_task_*()
functions, I guess you will have the same issue with bpf_iter_css_*()
and probably others as mentioned in my commit message.

Cheers,
Matt

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH bpf-next] bpf: fix compilation error without CGROUPS
  2023-11-01  8:25       ` Matthieu Baerts
@ 2023-11-01 12:53         ` Jiri Olsa
  0 siblings, 0 replies; 6+ messages in thread
From: Jiri Olsa @ 2023-11-01 12:53 UTC (permalink / raw)
  To: Matthieu Baerts, Arnd Bergmann
  Cc: Jiri Olsa, Alexei Starovoitov, Yonghong Song, Alexei Starovoitov,
	Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau, Song Liu,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Chuyi Zhou,
	Tejun Heo, bpf, LKML, MPTCP Upstream, kernel test robot

On Wed, Nov 01, 2023 at 09:25:34AM +0100, Matthieu Baerts wrote:
> Hi Jirka, Alexei,
> 
> On 01/11/2023 08:25, Jiri Olsa wrote:
> > On Tue, Oct 31, 2023 at 08:54:56PM -0700, Alexei Starovoitov wrote:
> >> On Tue, Oct 31, 2023 at 10:05 AM Jiri Olsa <olsajiri@gmail.com> wrote:
> >>>
> >>> On Tue, Oct 31, 2023 at 04:49:34PM +0100, Matthieu Baerts wrote:
> >>>> Our MPTCP CI complained [1] -- and KBuild too -- that it was no longer
> >>>> possible to build the kernel without CONFIG_CGROUPS:
> >>>>
> >>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new':
> >>>>   kernel/bpf/task_iter.c:919:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function)
> >>>>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> >>>>         |              ^~~~~~~~~~~~~~~~~~~
> >>>>   kernel/bpf/task_iter.c:919:14: note: each undeclared identifier is reported only once for each function it appears in
> >>>>   kernel/bpf/task_iter.c:919:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function)
> >>>>     919 |         case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED:
> >>>>         |                                    ^~~~~~~~~~~~~~~~~~~~~~
> >>>>   kernel/bpf/task_iter.c:927:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter'
> >>>>     927 |         kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter));
> >>>>         |                                                            ^~~~~~
> >>>>   kernel/bpf/task_iter.c:930:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration]
> >>>>     930 |         css_task_iter_start(css, flags, kit->css_it);
> >>>>         |         ^~~~~~~~~~~~~~~~~~~
> >>>>         |         task_seq_start
> >>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next':
> >>>>   kernel/bpf/task_iter.c:940:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration]
> >>>>     940 |         return css_task_iter_next(kit->css_it);
> >>>>         |                ^~~~~~~~~~~~~~~~~~
> >>>>         |                class_dev_iter_next
> >>>>   kernel/bpf/task_iter.c:940:16: error: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Werror=int-conversion]
> >>>>     940 |         return css_task_iter_next(kit->css_it);
> >>>>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>>>   kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy':
> >>>>   kernel/bpf/task_iter.c:949:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration]
> >>>>     949 |         css_task_iter_end(kit->css_it);
> >>>>         |         ^~~~~~~~~~~~~~~~~
> >>>>
> >>>> This patch simply surrounds with a #ifdef the new code requiring CGroups
> >>>> support. It seems enough for the compiler and this is similar to
> >>>> bpf_iter_css_{new,next,destroy}() functions where no other #ifdef have
> >>>> been added in kernel/bpf/helpers.c and in the selftests.
> >>>>
> >>>> Fixes: 9c66dc94b62a ("bpf: Introduce css_task open-coded iterator kfuncs")
> >>>> Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/6665206927
> >>>> Reported-by: kernel test robot <lkp@intel.com>
> >>>> Closes: https://lore.kernel.org/oe-kbuild-all/202310260528.aHWgVFqq-lkp@intel.com/
> >>>> Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
> >>>
> >>> Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>
> >>
> >> I believe this patch has the same issue as Arnd's patch:
> >> https://lore.kernel.org/all/CAADnVQL-zoFPPOVu3nM981gKxRu7Q3G3LTRsKstJEeahpoR1RQ@mail.gmail.com/
> 
> @Alexei: Arf, sorry, I didn't find this patch when searching for
> "9c66dc94b62a" on lore. I don't know why I didn't search for the commit
> title as usual...
> 
> >> I'd like to merge the fix asap. Please make it a complete fix.
> > 
> > ugh, it won't fail the build, it just warns.. I think we should
> > fail the build in that case, I'll check
> 
> @Jirka: Thank you for checking that! Please tell me if you want me to
> send a v2 or if you prefer to do that. I don't mind if you prefer to
> send your own patches, as long as there is a fix for that at the end :)
> 
> Note that if a warning is emitted for these new bpf_iter_css_task_*()
> functions, I guess you will have the same issue with bpf_iter_css_*()
> and probably others as mentioned in my commit message.

Arnd,
are you planning to send new version for your patch [1] ?
we have a patch collision ;-)

I can send v2 if needed.. so far I'm checking the change below

jirka


[1] https://lore.kernel.org/all/CAADnVQL-zoFPPOVu3nM981gKxRu7Q3G3LTRsKstJEeahpoR1RQ@mail.gmail.com/
---
diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c
index e46ac288a108..95449ea7cc1b 100644
--- a/kernel/bpf/helpers.c
+++ b/kernel/bpf/helpers.c
@@ -2564,15 +2564,17 @@ BTF_ID_FLAGS(func, bpf_iter_num_destroy, KF_ITER_DESTROY)
 BTF_ID_FLAGS(func, bpf_iter_task_vma_new, KF_ITER_NEW | KF_RCU)
 BTF_ID_FLAGS(func, bpf_iter_task_vma_next, KF_ITER_NEXT | KF_RET_NULL)
 BTF_ID_FLAGS(func, bpf_iter_task_vma_destroy, KF_ITER_DESTROY)
+#ifdef CONFIG_CGROUPS
 BTF_ID_FLAGS(func, bpf_iter_css_task_new, KF_ITER_NEW | KF_TRUSTED_ARGS)
 BTF_ID_FLAGS(func, bpf_iter_css_task_next, KF_ITER_NEXT | KF_RET_NULL)
 BTF_ID_FLAGS(func, bpf_iter_css_task_destroy, KF_ITER_DESTROY)
-BTF_ID_FLAGS(func, bpf_iter_task_new, KF_ITER_NEW | KF_TRUSTED_ARGS | KF_RCU_PROTECTED)
-BTF_ID_FLAGS(func, bpf_iter_task_next, KF_ITER_NEXT | KF_RET_NULL)
-BTF_ID_FLAGS(func, bpf_iter_task_destroy, KF_ITER_DESTROY)
 BTF_ID_FLAGS(func, bpf_iter_css_new, KF_ITER_NEW | KF_TRUSTED_ARGS | KF_RCU_PROTECTED)
 BTF_ID_FLAGS(func, bpf_iter_css_next, KF_ITER_NEXT | KF_RET_NULL)
 BTF_ID_FLAGS(func, bpf_iter_css_destroy, KF_ITER_DESTROY)
+#endif
+BTF_ID_FLAGS(func, bpf_iter_task_new, KF_ITER_NEW | KF_TRUSTED_ARGS | KF_RCU_PROTECTED)
+BTF_ID_FLAGS(func, bpf_iter_task_next, KF_ITER_NEXT | KF_RET_NULL)
+BTF_ID_FLAGS(func, bpf_iter_task_destroy, KF_ITER_DESTROY)
 BTF_ID_FLAGS(func, bpf_dynptr_adjust)
 BTF_ID_FLAGS(func, bpf_dynptr_is_null)
 BTF_ID_FLAGS(func, bpf_dynptr_is_rdonly)
diff --git a/kernel/bpf/task_iter.c b/kernel/bpf/task_iter.c
index 59e747938bdb..e0d313114a5b 100644
--- a/kernel/bpf/task_iter.c
+++ b/kernel/bpf/task_iter.c
@@ -894,6 +894,8 @@ __bpf_kfunc void bpf_iter_task_vma_destroy(struct bpf_iter_task_vma *it)
 
 __diag_pop();
 
+#ifdef CONFIG_CGROUPS
+
 struct bpf_iter_css_task {
 	__u64 __opaque[1];
 } __attribute__((aligned(8)));
@@ -952,6 +954,8 @@ __bpf_kfunc void bpf_iter_css_task_destroy(struct bpf_iter_css_task *it)
 
 __diag_pop();
 
+#endif /* CONFIG_CGROUPS */
+
 struct bpf_iter_task {
 	__u64 __opaque[3];
 } __attribute__((aligned(8)));
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index e42ce974b106..f2afb17a1534 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -5421,7 +5421,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 */
 BTF_SET_START(rcu_protected_types)
 BTF_ID(struct, prog_test_ref_kfunc)
+#ifdef CONFIG_CGROUPS
 BTF_ID(struct, cgroup)
+#endif
 BTF_ID(struct, bpf_cpumask)
 BTF_ID(struct, task_struct)
 BTF_SET_END(rcu_protected_types)
@@ -10873,7 +10875,9 @@ BTF_ID(func, bpf_dynptr_clone)
 BTF_ID(func, bpf_percpu_obj_new_impl)
 BTF_ID(func, bpf_percpu_obj_drop_impl)
 BTF_ID(func, bpf_throw)
+#ifdef CONFIG_CGROUPS
 BTF_ID(func, bpf_iter_css_task_new)
+#endif
 BTF_SET_END(special_kfunc_set)
 
 BTF_ID_LIST(special_kfunc_list)
@@ -10899,7 +10903,11 @@ BTF_ID(func, bpf_dynptr_clone)
 BTF_ID(func, bpf_percpu_obj_new_impl)
 BTF_ID(func, bpf_percpu_obj_drop_impl)
 BTF_ID(func, bpf_throw)
+#ifdef CONFIG_CGROUPS
 BTF_ID(func, bpf_iter_css_task_new)
+#else
+BTF_ID_UNUSED
+#endif
 
 static bool is_kfunc_ret_null(struct bpf_kfunc_call_arg_meta *meta)
 {

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-11-01 12:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-31 15:49 [PATCH bpf-next] bpf: fix compilation error without CGROUPS Matthieu Baerts
2023-10-31 17:05 ` Jiri Olsa
2023-11-01  3:54   ` Alexei Starovoitov
2023-11-01  7:25     ` Jiri Olsa
2023-11-01  8:25       ` Matthieu Baerts
2023-11-01 12:53         ` Jiri Olsa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox