stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set()
@ 2023-06-26 18:11 SeongJae Park
  2023-06-27 16:20 ` Jiri Olsa
  0 siblings, 1 reply; 4+ messages in thread
From: SeongJae Park @ 2023-06-26 18:11 UTC (permalink / raw)
  To: martin.lau
  Cc: ast, bpf, linux-kernel, SeongJae Park, Alexander Egorenkov,
	Kumar Kartikeya Dwivedi, stable

__register_btf_kfunc_id_set() assumes .BTF to be part of the module's
.ko file if CONFIG_DEBUG_INFO_BTF is enabled.  If that's not the case,
the function prints an error message and return an error.  As a result,
such modules cannot be loaded.

However, the section could be stripped out during a build process.  It
would be better to let the modules loaded, because their basic
functionalities have no problem[1], though the BTF functionalities will
not be supported.  Make the function to lower the level of the message
from error to warn, and return no error.

[1] https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/

Reported-by: Alexander Egorenkov <Alexander.Egorenkov@ibm.com>
Link: https://lore.kernel.org/bpf/87y228q66f.fsf@oc8242746057.ibm.com/
Suggested-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
Fixes: dee872e124e8 ("bpf: Populate kfunc BTF ID sets in struct btf")
Cc: <stable@vger.kernel.org> # 5.17.x
Signed-off-by: SeongJae Park <sj@kernel.org>
---
 kernel/bpf/btf.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index 6b682b8e4b50..d683f034996f 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -7848,14 +7848,10 @@ static int __register_btf_kfunc_id_set(enum btf_kfunc_hook hook,
 
 	btf = btf_get_module_btf(kset->owner);
 	if (!btf) {
-		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) {
-			pr_err("missing vmlinux BTF, cannot register kfuncs\n");
-			return -ENOENT;
-		}
-		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) {
-			pr_err("missing module BTF, cannot register kfuncs\n");
-			return -ENOENT;
-		}
+		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF))
+			pr_warn("missing vmlinux BTF, cannot register kfuncs\n");
+		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES))
+			pr_warn("missing module BTF, cannot register kfuncs\n");
 		return 0;
 	}
 	if (IS_ERR(btf))
-- 
2.25.1


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

* Re: [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set()
  2023-06-26 18:11 [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set() SeongJae Park
@ 2023-06-27 16:20 ` Jiri Olsa
  2023-06-27 16:37   ` SeongJae Park
  0 siblings, 1 reply; 4+ messages in thread
From: Jiri Olsa @ 2023-06-27 16:20 UTC (permalink / raw)
  To: SeongJae Park
  Cc: martin.lau, ast, bpf, linux-kernel, Alexander Egorenkov,
	Kumar Kartikeya Dwivedi, stable

On Mon, Jun 26, 2023 at 06:11:20PM +0000, SeongJae Park wrote:
> __register_btf_kfunc_id_set() assumes .BTF to be part of the module's
> .ko file if CONFIG_DEBUG_INFO_BTF is enabled.  If that's not the case,
> the function prints an error message and return an error.  As a result,
> such modules cannot be loaded.
> 
> However, the section could be stripped out during a build process.  It
> would be better to let the modules loaded, because their basic
> functionalities have no problem[1], though the BTF functionalities will
> not be supported.  Make the function to lower the level of the message
> from error to warn, and return no error.
> 
> [1] https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> 
> Reported-by: Alexander Egorenkov <Alexander.Egorenkov@ibm.com>
> Link: https://lore.kernel.org/bpf/87y228q66f.fsf@oc8242746057.ibm.com/
> Suggested-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
> Link: https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> Fixes: dee872e124e8 ("bpf: Populate kfunc BTF ID sets in struct btf")

should it be this one in Fixes instead?
  c446fdacb10d bpf: fix register_btf_kfunc_id_set for !CONFIG_DEBUG_INFO_BTF

other than that looks good

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

jirka

> Cc: <stable@vger.kernel.org> # 5.17.x
> Signed-off-by: SeongJae Park <sj@kernel.org>
> ---
>  kernel/bpf/btf.c | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
> index 6b682b8e4b50..d683f034996f 100644
> --- a/kernel/bpf/btf.c
> +++ b/kernel/bpf/btf.c
> @@ -7848,14 +7848,10 @@ static int __register_btf_kfunc_id_set(enum btf_kfunc_hook hook,
>  
>  	btf = btf_get_module_btf(kset->owner);
>  	if (!btf) {
> -		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) {
> -			pr_err("missing vmlinux BTF, cannot register kfuncs\n");
> -			return -ENOENT;
> -		}
> -		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) {
> -			pr_err("missing module BTF, cannot register kfuncs\n");
> -			return -ENOENT;
> -		}
> +		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF))
> +			pr_warn("missing vmlinux BTF, cannot register kfuncs\n");
> +		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES))
> +			pr_warn("missing module BTF, cannot register kfuncs\n");
>  		return 0;
>  	}
>  	if (IS_ERR(btf))
> -- 
> 2.25.1
> 
> 

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

* Re: [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set()
  2023-06-27 16:20 ` Jiri Olsa
@ 2023-06-27 16:37   ` SeongJae Park
  2023-06-27 16:44     ` SeongJae Park
  0 siblings, 1 reply; 4+ messages in thread
From: SeongJae Park @ 2023-06-27 16:37 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: SeongJae Park, martin.lau, ast, bpf, linux-kernel,
	Alexander Egorenkov, Kumar Kartikeya Dwivedi, stable

Hi Jiri,

On Tue, 27 Jun 2023 18:20:39 +0200 Jiri Olsa <olsajiri@gmail.com> wrote:

> On Mon, Jun 26, 2023 at 06:11:20PM +0000, SeongJae Park wrote:
> > __register_btf_kfunc_id_set() assumes .BTF to be part of the module's
> > .ko file if CONFIG_DEBUG_INFO_BTF is enabled.  If that's not the case,
> > the function prints an error message and return an error.  As a result,
> > such modules cannot be loaded.
> > 
> > However, the section could be stripped out during a build process.  It
> > would be better to let the modules loaded, because their basic
> > functionalities have no problem[1], though the BTF functionalities will
> > not be supported.  Make the function to lower the level of the message
> > from error to warn, and return no error.
> > 
> > [1] https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> > 
> > Reported-by: Alexander Egorenkov <Alexander.Egorenkov@ibm.com>
> > Link: https://lore.kernel.org/bpf/87y228q66f.fsf@oc8242746057.ibm.com/
> > Suggested-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
> > Link: https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> > Fixes: dee872e124e8 ("bpf: Populate kfunc BTF ID sets in struct btf")
> 
> should it be this one in Fixes instead?
>   c446fdacb10d bpf: fix register_btf_kfunc_id_set for !CONFIG_DEBUG_INFO_BTF

The commit c446fdacb10d was trying to fix commit dee872e124e8, which this patch
is claiming to fix, by relaxing the check.  Nevertheless, it seems the check
need to further relaxed, and therefore I wrote this patch.

For the reason, I was thinking this patch is directly fixing c446fdacb10d, but
is also fixing a problem originally introduced by dee872e124e8.   Nevertheless,
as the dee872e124e8 also has the Fixes tag, I think your suggestion makes
sense. 

I will fix so in the next spin.

> 
> other than that looks good
> 
> Acked-by: Jiri Olsa <jolsa@kernel.org>

Thank you, I will also add this to the next version of this patch :)


Thanks,
SJ

> 
> jirka
> 
> > Cc: <stable@vger.kernel.org> # 5.17.x
> > Signed-off-by: SeongJae Park <sj@kernel.org>
> > ---
> >  kernel/bpf/btf.c | 12 ++++--------
> >  1 file changed, 4 insertions(+), 8 deletions(-)
> > 
> > diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
> > index 6b682b8e4b50..d683f034996f 100644
> > --- a/kernel/bpf/btf.c
> > +++ b/kernel/bpf/btf.c
> > @@ -7848,14 +7848,10 @@ static int __register_btf_kfunc_id_set(enum btf_kfunc_hook hook,
> >  
> >  	btf = btf_get_module_btf(kset->owner);
> >  	if (!btf) {
> > -		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) {
> > -			pr_err("missing vmlinux BTF, cannot register kfuncs\n");
> > -			return -ENOENT;
> > -		}
> > -		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) {
> > -			pr_err("missing module BTF, cannot register kfuncs\n");
> > -			return -ENOENT;
> > -		}
> > +		if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF))
> > +			pr_warn("missing vmlinux BTF, cannot register kfuncs\n");
> > +		if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES))
> > +			pr_warn("missing module BTF, cannot register kfuncs\n");
> >  		return 0;
> >  	}
> >  	if (IS_ERR(btf))
> > -- 
> > 2.25.1
> > 
> > 

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

* Re: [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set()
  2023-06-27 16:37   ` SeongJae Park
@ 2023-06-27 16:44     ` SeongJae Park
  0 siblings, 0 replies; 4+ messages in thread
From: SeongJae Park @ 2023-06-27 16:44 UTC (permalink / raw)
  To: SeongJae Park
  Cc: Jiri Olsa, martin.lau, ast, bpf, linux-kernel,
	Alexander Egorenkov, Kumar Kartikeya Dwivedi, stable

On Tue, 27 Jun 2023 16:37:50 +0000 SeongJae Park <sj@kernel.org> wrote:

> Hi Jiri,
> 
> On Tue, 27 Jun 2023 18:20:39 +0200 Jiri Olsa <olsajiri@gmail.com> wrote:
> 
> > On Mon, Jun 26, 2023 at 06:11:20PM +0000, SeongJae Park wrote:
> > > __register_btf_kfunc_id_set() assumes .BTF to be part of the module's
> > > .ko file if CONFIG_DEBUG_INFO_BTF is enabled.  If that's not the case,
> > > the function prints an error message and return an error.  As a result,
> > > such modules cannot be loaded.
> > > 
> > > However, the section could be stripped out during a build process.  It
> > > would be better to let the modules loaded, because their basic
> > > functionalities have no problem[1], though the BTF functionalities will
> > > not be supported.  Make the function to lower the level of the message
> > > from error to warn, and return no error.
> > > 
> > > [1] https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> > > 
> > > Reported-by: Alexander Egorenkov <Alexander.Egorenkov@ibm.com>
> > > Link: https://lore.kernel.org/bpf/87y228q66f.fsf@oc8242746057.ibm.com/
> > > Suggested-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
> > > Link: https://lore.kernel.org/bpf/20220219082037.ow2kbq5brktf4f2u@apollo.legion/
> > > Fixes: dee872e124e8 ("bpf: Populate kfunc BTF ID sets in struct btf")
> > 
> > should it be this one in Fixes instead?
> >   c446fdacb10d bpf: fix register_btf_kfunc_id_set for !CONFIG_DEBUG_INFO_BTF
> 
> The commit c446fdacb10d was trying to fix commit dee872e124e8, which this patch
> is claiming to fix, by relaxing the check.  Nevertheless, it seems the check
> need to further relaxed, and therefore I wrote this patch.
> 
> For the reason, I was thinking this patch is directly fixing c446fdacb10d, but
> is also fixing a problem originally introduced by dee872e124e8.   Nevertheless,
> as the dee872e124e8 also has the Fixes tag, I think your suggestion makes

s/dee872e124e8 also has /c446fdacb10d also has /

Sorry if it made anyone be confused.


Thanks,
SJ

[...]

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

end of thread, other threads:[~2023-06-27 16:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-26 18:11 [PATCH] btf: warn but return no error for NULL btf from __register_btf_kfunc_id_set() SeongJae Park
2023-06-27 16:20 ` Jiri Olsa
2023-06-27 16:37   ` SeongJae Park
2023-06-27 16:44     ` SeongJae Park

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).