2021-03-17 07:17:24

by Tiezhu Yang

[permalink] [raw]
Subject: [PATCH] MIPS/bpf: Enable bpf_probe_read{, str}() on MIPS again

After commit 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to
archs where they work"), bpf_probe_read{, str}() functions were not longer
available on MIPS, so there exists some errors when running bpf program:

root@linux:/home/loongson/bcc# python examples/tracing/task_switch.py
bpf: Failed to load program: Invalid argument
[...]
11: (85) call bpf_probe_read#4
unknown func bpf_probe_read#4
[...]
Exception: Failed to load BPF program count_sched: Invalid argument

So select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE in arch/mips/Kconfig,
otherwise the bpf old helper bpf_probe_read() will not be available.

This is similar with the commit d195b1d1d1196 ("powerpc/bpf: Enable
bpf_probe_read{, str}() on powerpc again").

Fixes: 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to archs where they work")
Signed-off-by: Tiezhu Yang <[email protected]>
---
arch/mips/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 160b3a8..4b94ec7 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -6,6 +6,7 @@ config MIPS
select ARCH_BINFMT_ELF_STATE if MIPS_FP_SUPPORT
select ARCH_HAS_FORTIFY_SOURCE
select ARCH_HAS_KCOV
+ select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
select ARCH_HAS_PTE_SPECIAL if !(32BIT && CPU_HAS_RIXI)
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
select ARCH_HAS_UBSAN_SANITIZE_ALL
--
2.1.0


2021-03-17 10:01:50

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH] MIPS/bpf: Enable bpf_probe_read{, str}() on MIPS again

On 17.03.2021 10:15, Tiezhu Yang wrote:

> After commit 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to
> archs where they work"), bpf_probe_read{, str}() functions were not longer

No longer.

> available on MIPS, so there exists some errors when running bpf program:

Exist.

> root@linux:/home/loongson/bcc# python examples/tracing/task_switch.py
> bpf: Failed to load program: Invalid argument
> [...]
> 11: (85) call bpf_probe_read#4
> unknown func bpf_probe_read#4
> [...]
> Exception: Failed to load BPF program count_sched: Invalid argument
>
> So select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE in arch/mips/Kconfig,
> otherwise the bpf old helper bpf_probe_read() will not be available.
>
> This is similar with the commit d195b1d1d1196 ("powerpc/bpf: Enable
> bpf_probe_read{, str}() on powerpc again").
>
> Fixes: 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to archs where they work")
> Signed-off-by: Tiezhu Yang <[email protected]>
[...]

MBR, Sergei

2021-03-17 22:23:28

by Daniel Borkmann

[permalink] [raw]
Subject: Re: [PATCH] MIPS/bpf: Enable bpf_probe_read{, str}() on MIPS again

On 3/17/21 8:15 AM, Tiezhu Yang wrote:
> After commit 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to
> archs where they work"), bpf_probe_read{, str}() functions were not longer
> available on MIPS, so there exists some errors when running bpf program:
>
> root@linux:/home/loongson/bcc# python examples/tracing/task_switch.py
> bpf: Failed to load program: Invalid argument
> [...]
> 11: (85) call bpf_probe_read#4
> unknown func bpf_probe_read#4
> [...]
> Exception: Failed to load BPF program count_sched: Invalid argument
>
> So select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE in arch/mips/Kconfig,
> otherwise the bpf old helper bpf_probe_read() will not be available.
>
> This is similar with the commit d195b1d1d1196 ("powerpc/bpf: Enable
> bpf_probe_read{, str}() on powerpc again").
>
> Fixes: 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to archs where they work")
> Signed-off-by: Tiezhu Yang <[email protected]>

Thomas, I presume you pick this up via mips tree (with typos fixed)? Or do you
want us to route the fix via bpf with your ACK? (I'm fine either way.)

Thanks,
Daniel

2021-03-17 23:10:41

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH] MIPS/bpf: Enable bpf_probe_read{, str}() on MIPS again

On Wed, Mar 17, 2021 at 11:18:48PM +0100, Daniel Borkmann wrote:
> On 3/17/21 8:15 AM, Tiezhu Yang wrote:
> > After commit 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to
> > archs where they work"), bpf_probe_read{, str}() functions were not longer
> > available on MIPS, so there exists some errors when running bpf program:
> >
> > root@linux:/home/loongson/bcc# python examples/tracing/task_switch.py
> > bpf: Failed to load program: Invalid argument
> > [...]
> > 11: (85) call bpf_probe_read#4
> > unknown func bpf_probe_read#4
> > [...]
> > Exception: Failed to load BPF program count_sched: Invalid argument
> >
> > So select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE in arch/mips/Kconfig,
> > otherwise the bpf old helper bpf_probe_read() will not be available.
> >
> > This is similar with the commit d195b1d1d1196 ("powerpc/bpf: Enable
> > bpf_probe_read{, str}() on powerpc again").
> >
> > Fixes: 0ebeea8ca8a4 ("bpf: Restrict bpf_probe_read{, str}() only to archs where they work")
> > Signed-off-by: Tiezhu Yang <[email protected]>
>
> Thomas, I presume you pick this up via mips tree (with typos fixed)? Or do you
> want us to route the fix via bpf with your ACK? (I'm fine either way.)

I'll take it via mips tree.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]