* [PATCH 1/2] bpf: Fix register_bpf_struct_ops() dummy [not found] <cover.1764843951.git.geert@linux-m68k.org> @ 2025-12-04 10:29 ` Geert Uytterhoeven 2025-12-04 18:18 ` Martin KaFai Lau 2025-12-04 10:29 ` [PATCH 2/2] net: smc: SMC_HS_CTRL_BPF should depend on BPF_JIT Geert Uytterhoeven 1 sibling, 1 reply; 4+ messages in thread From: Geert Uytterhoeven @ 2025-12-04 10:29 UTC (permalink / raw) To: Kui-Feng Lee, Martin KaFai Lau, D . Wythe, Dust Li, Alexei Starovoitov, Daniel Borkmann, John Fastabend, Sidraya Jayagond, Wenjia Zhang, Mahanta Jambigi, Tony Lu, Wen Gu, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman Cc: bpf, linux-rdma, linux-s390, netdev, linux-kernel, Geert Uytterhoeven If CONFIG_BPF_SYSCALL=y, but CONFIG_BPF_JIT=n: net/smc/smc_hs_bpf.c: In function ‘bpf_smc_hs_ctrl_init’: include/linux/bpf.h:2068:50: error: statement with no effect [-Werror=unused-value] 2068 | #define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) | ^~~~~~~~~~~~~~~~ net/smc/smc_hs_bpf.c:139:16: note: in expansion of macro ‘register_bpf_struct_ops’ 139 | return register_bpf_struct_ops(&bpf_smc_hs_ctrl_ops, smc_hs_ctrl); | ^~~~~~~~~~~~~~~~~~~~~~~ As type is not a variable, but a variable type, this cannot be fixed by just converting register_bpf_struct_ops() into a static inline function. Hence fix this by introducing a static inline intermediate dummy. Fixes: f6be98d19985411c ("bpf, net: switch to dynamic registration") Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- include/linux/bpf.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 6498be4c44f8c275..bb69905c28a761e7 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2065,7 +2065,11 @@ int bpf_struct_ops_desc_init(struct bpf_struct_ops_desc *st_ops_desc, void bpf_map_struct_ops_info_fill(struct bpf_map_info *info, struct bpf_map *map); void bpf_struct_ops_desc_release(struct bpf_struct_ops_desc *st_ops_desc); #else -#define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) +static inline int __register_bpf_struct_ops(struct bpf_struct_ops *st_ops) +{ + return 0; +} +#define register_bpf_struct_ops(st_ops, type) __register_bpf_struct_ops(st_ops) static inline bool bpf_try_module_get(const void *data, struct module *owner) { return try_module_get(owner); -- 2.43.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] bpf: Fix register_bpf_struct_ops() dummy 2025-12-04 10:29 ` [PATCH 1/2] bpf: Fix register_bpf_struct_ops() dummy Geert Uytterhoeven @ 2025-12-04 18:18 ` Martin KaFai Lau 0 siblings, 0 replies; 4+ messages in thread From: Martin KaFai Lau @ 2025-12-04 18:18 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Kui-Feng Lee, D . Wythe, Dust Li, Alexei Starovoitov, Daniel Borkmann, John Fastabend, Sidraya Jayagond, Wenjia Zhang, Mahanta Jambigi, Tony Lu, Wen Gu, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, bpf, linux-rdma, linux-s390, netdev, linux-kernel On 12/4/25 2:29 AM, Geert Uytterhoeven wrote: > If CONFIG_BPF_SYSCALL=y, but CONFIG_BPF_JIT=n: > > net/smc/smc_hs_bpf.c: In function ‘bpf_smc_hs_ctrl_init’: > include/linux/bpf.h:2068:50: error: statement with no effect [-Werror=unused-value] > 2068 | #define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) > | ^~~~~~~~~~~~~~~~ > net/smc/smc_hs_bpf.c:139:16: note: in expansion of macro ‘register_bpf_struct_ops’ > 139 | return register_bpf_struct_ops(&bpf_smc_hs_ctrl_ops, smc_hs_ctrl); > | ^~~~~~~~~~~~~~~~~~~~~~~ > > As type is not a variable, but a variable type, this cannot be fixed by > just converting register_bpf_struct_ops() into a static inline function. > Hence fix this by introducing a static inline intermediate dummy. > > Fixes: f6be98d19985411c ("bpf, net: switch to dynamic registration") > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- > include/linux/bpf.h | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/include/linux/bpf.h b/include/linux/bpf.h > index 6498be4c44f8c275..bb69905c28a761e7 100644 > --- a/include/linux/bpf.h > +++ b/include/linux/bpf.h > @@ -2065,7 +2065,11 @@ int bpf_struct_ops_desc_init(struct bpf_struct_ops_desc *st_ops_desc, > void bpf_map_struct_ops_info_fill(struct bpf_map_info *info, struct bpf_map *map); > void bpf_struct_ops_desc_release(struct bpf_struct_ops_desc *st_ops_desc); > #else > -#define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) > +static inline int __register_bpf_struct_ops(struct bpf_struct_ops *st_ops) > +{ > + return 0; > +} > +#define register_bpf_struct_ops(st_ops, type) __register_bpf_struct_ops(st_ops) Only patch 2 is needed. This empty register_bpf_struct_ops should be removed in the bpf-next tree as a cleanup. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] net: smc: SMC_HS_CTRL_BPF should depend on BPF_JIT [not found] <cover.1764843951.git.geert@linux-m68k.org> 2025-12-04 10:29 ` [PATCH 1/2] bpf: Fix register_bpf_struct_ops() dummy Geert Uytterhoeven @ 2025-12-04 10:29 ` Geert Uytterhoeven 2025-12-04 19:15 ` Martin KaFai Lau 1 sibling, 1 reply; 4+ messages in thread From: Geert Uytterhoeven @ 2025-12-04 10:29 UTC (permalink / raw) To: Kui-Feng Lee, Martin KaFai Lau, D . Wythe, Dust Li, Alexei Starovoitov, Daniel Borkmann, John Fastabend, Sidraya Jayagond, Wenjia Zhang, Mahanta Jambigi, Tony Lu, Wen Gu, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman Cc: bpf, linux-rdma, linux-s390, netdev, linux-kernel, Geert Uytterhoeven If CONFIG_BPF_SYSCALL=y, but CONFIG_BPF_JIT=n: net/smc/smc_hs_bpf.c: In function ‘bpf_smc_hs_ctrl_init’: include/linux/bpf.h:2068:50: error: statement with no effect [-Werror=unused-value] 2068 | #define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) | ^~~~~~~~~~~~~~~~ net/smc/smc_hs_bpf.c:139:16: note: in expansion of macro ‘register_bpf_struct_ops’ 139 | return register_bpf_struct_ops(&bpf_smc_hs_ctrl_ops, smc_hs_ctrl); | ^~~~~~~~~~~~~~~~~~~~~~~ While this compile error is caused by a bug in <linux/bpf.h>, none of the code in net/smc/smc_hs_bpf.c becomes effective if CONFIG_BPF_JIT is not enabled. Hence add a dependency on BPF_JIT. While at it, add the missing newline at the end of the file. Fixes: 15f295f55656658e ("net/smc: bpf: Introduce generic hook for handshake flow") Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- net/smc/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/smc/Kconfig b/net/smc/Kconfig index 325addf83cc69f6c..277ef504bc26ef89 100644 --- a/net/smc/Kconfig +++ b/net/smc/Kconfig @@ -22,10 +22,10 @@ config SMC_DIAG config SMC_HS_CTRL_BPF bool "Generic eBPF hook for SMC handshake flow" - depends on SMC && BPF_SYSCALL + depends on SMC && BPF_JIT && BPF_SYSCALL default y help SMC_HS_CTRL_BPF enables support to register generic eBPF hook for SMC handshake flow, which offer much greater flexibility in modifying the behavior of the SMC protocol stack compared to a complete kernel-based approach. Select - this option if you want filtring the handshake process via eBPF programs. \ No newline at end of file + this option if you want filtring the handshake process via eBPF programs. -- 2.43.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] net: smc: SMC_HS_CTRL_BPF should depend on BPF_JIT 2025-12-04 10:29 ` [PATCH 2/2] net: smc: SMC_HS_CTRL_BPF should depend on BPF_JIT Geert Uytterhoeven @ 2025-12-04 19:15 ` Martin KaFai Lau 0 siblings, 0 replies; 4+ messages in thread From: Martin KaFai Lau @ 2025-12-04 19:15 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Kui-Feng Lee, D . Wythe, Dust Li, Alexei Starovoitov, Daniel Borkmann, John Fastabend, Sidraya Jayagond, Wenjia Zhang, Mahanta Jambigi, Tony Lu, Wen Gu, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, bpf, linux-rdma, linux-s390, netdev, linux-kernel On 12/4/25 2:29 AM, Geert Uytterhoeven wrote: > If CONFIG_BPF_SYSCALL=y, but CONFIG_BPF_JIT=n: > > net/smc/smc_hs_bpf.c: In function ‘bpf_smc_hs_ctrl_init’: > include/linux/bpf.h:2068:50: error: statement with no effect [-Werror=unused-value] > 2068 | #define register_bpf_struct_ops(st_ops, type) ({ (void *)(st_ops); 0; }) > | ^~~~~~~~~~~~~~~~ > net/smc/smc_hs_bpf.c:139:16: note: in expansion of macro ‘register_bpf_struct_ops’ > 139 | return register_bpf_struct_ops(&bpf_smc_hs_ctrl_ops, smc_hs_ctrl); > | ^~~~~~~~~~~~~~~~~~~~~~~ > > While this compile error is caused by a bug in <linux/bpf.h>, none of > the code in net/smc/smc_hs_bpf.c becomes effective if CONFIG_BPF_JIT is > not enabled. Hence add a dependency on BPF_JIT. > > While at it, add the missing newline at the end of the file. > > Fixes: 15f295f55656658e ("net/smc: bpf: Introduce generic hook for handshake flow") > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- > net/smc/Kconfig | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/smc/Kconfig b/net/smc/Kconfig > index 325addf83cc69f6c..277ef504bc26ef89 100644 > --- a/net/smc/Kconfig > +++ b/net/smc/Kconfig > @@ -22,10 +22,10 @@ config SMC_DIAG > > config SMC_HS_CTRL_BPF > bool "Generic eBPF hook for SMC handshake flow" > - depends on SMC && BPF_SYSCALL > + depends on SMC && BPF_JIT && BPF_SYSCALL > default y > help > SMC_HS_CTRL_BPF enables support to register generic eBPF hook for SMC > handshake flow, which offer much greater flexibility in modifying the behavior > of the SMC protocol stack compared to a complete kernel-based approach. Select > - this option if you want filtring the handshake process via eBPF programs. > \ No newline at end of file > + this option if you want filtring the handshake process via eBPF programs. I have applied patch 2 to the bpf tree. Thanks. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-04 19:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.1764843951.git.geert@linux-m68k.org>
2025-12-04 10:29 ` [PATCH 1/2] bpf: Fix register_bpf_struct_ops() dummy Geert Uytterhoeven
2025-12-04 18:18 ` Martin KaFai Lau
2025-12-04 10:29 ` [PATCH 2/2] net: smc: SMC_HS_CTRL_BPF should depend on BPF_JIT Geert Uytterhoeven
2025-12-04 19:15 ` Martin KaFai Lau
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).