2023-09-20 09:07:14

by Koba Ko

[permalink] [raw]
Subject: [PATCH] x86/arch: Fix access invalid member when disable CONFIG_UNWINDER_ORC

CONFIG_UNWINDER_DRAME_POINTER doesn't have bp and sp members.
this leads the compilation error when only enable CONFIG_UNWINDER_DRAME_POINTER.

arch/x86/net/bpf_jit_comp.c:3022:72: error: 'struct unwind_state' has no member named
'sp'; did you mean 'bp'?
3022 | if (!addr || !consume_fn(cookie, (u64)addr, (u64)state.sp, (u64)state.bp))

Fixes: f18b03fabaa9 ("bpf: Implement BPF exceptions")
Signed-off-by: Koba Ko <[email protected]>
---
arch/x86/net/bpf_jit_comp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index 84005f2114e09..db2b09949d407 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -3012,7 +3012,7 @@ bool bpf_jit_supports_exceptions(void)

void arch_bpf_stack_walk(bool (*consume_fn)(void *cookie, u64 ip, u64 sp, u64 bp), void *cookie)
{
-#if defined(CONFIG_UNWINDER_ORC) || defined(CONFIG_UNWINDER_FRAME_POINTER)
+#if defined(CONFIG_UNWINDER_ORC)
struct unwind_state state;
unsigned long addr;

--
2.34.1


2023-09-20 10:59:16

by Kumar Kartikeya Dwivedi

[permalink] [raw]
Subject: Re: [PATCH] x86/arch: Fix access invalid member when disable CONFIG_UNWINDER_ORC

On Wed, 20 Sept 2023 at 06:14, Koba Ko <[email protected]> wrote:
>
> CONFIG_UNWINDER_DRAME_POINTER doesn't have bp and sp members.
> this leads the compilation error when only enable CONFIG_UNWINDER_DRAME_POINTER.
>
> arch/x86/net/bpf_jit_comp.c:3022:72: error: 'struct unwind_state' has no member named
> 'sp'; did you mean 'bp'?
> 3022 | if (!addr || !consume_fn(cookie, (u64)addr, (u64)state.sp, (u64)state.bp))
>
> Fixes: f18b03fabaa9 ("bpf: Implement BPF exceptions")
> Signed-off-by: Koba Ko <[email protected]>
> ---

Hi Koba,
Sincere apologies for the build breakage. This is fixed now in
bpf-next, and I believe it will soon make its way into net-next and
linux-next.
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=5bfdb4fbf348f9e1935a6e9c64e7f60cb913fb21

> arch/x86/net/bpf_jit_comp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
> index 84005f2114e09..db2b09949d407 100644
> --- a/arch/x86/net/bpf_jit_comp.c
> +++ b/arch/x86/net/bpf_jit_comp.c
> @@ -3012,7 +3012,7 @@ bool bpf_jit_supports_exceptions(void)
>
> void arch_bpf_stack_walk(bool (*consume_fn)(void *cookie, u64 ip, u64 sp, u64 bp), void *cookie)
> {
> -#if defined(CONFIG_UNWINDER_ORC) || defined(CONFIG_UNWINDER_FRAME_POINTER)
> +#if defined(CONFIG_UNWINDER_ORC)
> struct unwind_state state;
> unsigned long addr;
>
> --
> 2.34.1
>