Message ID | 20230724090044.2668064-1-ilia.lin@kernel.org (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | xfrm: kconfig: Fix XFRM_OFFLOAD dependency on XFRM | expand |
On Mon, Jul 24, 2023 at 12:00:44PM +0300, Ilia Lin wrote: > If XFRM_OFFLOAD is configured, but XFRM is not How did you do it? >, it will cause > compilation error on include xfrm.h: > C 05:56:39 In file included from /src/linux/kernel_platform/msm-kernel/net/core/sock.c:127: > C 05:56:39 /src/linux/kernel_platform/msm-kernel/include/net/xfrm.h:1932:30: error: no member named 'xfrm' in 'struct dst_entry' > C 05:56:39 struct xfrm_state *x = dst->xfrm; > C 05:56:39 ~~~ ^ > > Making the XFRM_OFFLOAD select the XFRM. > > Fixes: 48e01e001da31 ("ixgbe/ixgbevf: fix XFRM_ALGO dependency") > Reported-by: Ilia Lin <ilia.lin@kernel.org> > Signed-off-by: Ilia Lin <ilia.lin@kernel.org> > --- > net/xfrm/Kconfig | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig > index 3adf31a83a79a..3fc2c1bcb5bbe 100644 > --- a/net/xfrm/Kconfig > +++ b/net/xfrm/Kconfig > @@ -10,6 +10,7 @@ config XFRM > > config XFRM_OFFLOAD > bool > + select XFRM struct dst_entry depends on CONFIG_XFRM and not on CONFIG_XFRM_OFFLOAD, so it is unclear to me why do you need to add new "select XFRM" line. 26 struct dst_entry { 27 struct net_device *dev; 28 struct dst_ops *ops; 29 unsigned long _metrics; 30 unsigned long expires; 31 #ifdef CONFIG_XFRM 32 struct xfrm_state *xfrm; 33 #else 34 void *__pad1; 35 #endif 36 int Thanks
Hi Leon, This is exactly like I described: * xfrm.h is included from the net/core/sock.c unconditionally. * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is being compiled. * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. Thanks, Ilia Lin On Mon, Jul 24, 2023 at 9:11 PM Leon Romanovsky <leon@kernel.org> wrote: > > On Mon, Jul 24, 2023 at 12:00:44PM +0300, Ilia Lin wrote: > > If XFRM_OFFLOAD is configured, but XFRM is not > > How did you do it? > > >, it will cause > > compilation error on include xfrm.h: > > C 05:56:39 In file included from /src/linux/kernel_platform/msm-kernel/net/core/sock.c:127: > > C 05:56:39 /src/linux/kernel_platform/msm-kernel/include/net/xfrm.h:1932:30: error: no member named 'xfrm' in 'struct dst_entry' > > C 05:56:39 struct xfrm_state *x = dst->xfrm; > > C 05:56:39 ~~~ ^ > > > > Making the XFRM_OFFLOAD select the XFRM. > > > > Fixes: 48e01e001da31 ("ixgbe/ixgbevf: fix XFRM_ALGO dependency") > > Reported-by: Ilia Lin <ilia.lin@kernel.org> > > Signed-off-by: Ilia Lin <ilia.lin@kernel.org> > > --- > > net/xfrm/Kconfig | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig > > index 3adf31a83a79a..3fc2c1bcb5bbe 100644 > > --- a/net/xfrm/Kconfig > > +++ b/net/xfrm/Kconfig > > @@ -10,6 +10,7 @@ config XFRM > > > > config XFRM_OFFLOAD > > bool > > + select XFRM > > struct dst_entry depends on CONFIG_XFRM and not on CONFIG_XFRM_OFFLOAD, > so it is unclear to me why do you need to add new "select XFRM" line. > > 26 struct dst_entry { > 27 struct net_device *dev; > 28 struct dst_ops *ops; > 29 unsigned long _metrics; > 30 unsigned long expires; > 31 #ifdef CONFIG_XFRM > 32 struct xfrm_state *xfrm; > 33 #else > 34 void *__pad1; > 35 #endif > 36 int > > Thanks
On Tue, Jul 25, 2023 at 07:41:49AM +0300, Ilia Lin wrote: > Hi Leon, You was already asked do not top-post. https://lore.kernel.org/netdev/20230718105446.GD8808@unreal/ Please stop it. > > This is exactly like I described: > * xfrm.h is included from the net/core/sock.c unconditionally. > * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is > being compiled. > * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. > * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. I asked two questions. First one was "How did you set XFRM_OFFLOAD without XFRM?". Thanks > > > Thanks, > Ilia Lin > > On Mon, Jul 24, 2023 at 9:11 PM Leon Romanovsky <leon@kernel.org> wrote: > > > > On Mon, Jul 24, 2023 at 12:00:44PM +0300, Ilia Lin wrote: > > > If XFRM_OFFLOAD is configured, but XFRM is not > > > > How did you do it? > > > > >, it will cause > > > compilation error on include xfrm.h: > > > C 05:56:39 In file included from /src/linux/kernel_platform/msm-kernel/net/core/sock.c:127: > > > C 05:56:39 /src/linux/kernel_platform/msm-kernel/include/net/xfrm.h:1932:30: error: no member named 'xfrm' in 'struct dst_entry' > > > C 05:56:39 struct xfrm_state *x = dst->xfrm; > > > C 05:56:39 ~~~ ^ > > > > > > Making the XFRM_OFFLOAD select the XFRM. > > > > > > Fixes: 48e01e001da31 ("ixgbe/ixgbevf: fix XFRM_ALGO dependency") > > > Reported-by: Ilia Lin <ilia.lin@kernel.org> > > > Signed-off-by: Ilia Lin <ilia.lin@kernel.org> > > > --- > > > net/xfrm/Kconfig | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig > > > index 3adf31a83a79a..3fc2c1bcb5bbe 100644 > > > --- a/net/xfrm/Kconfig > > > +++ b/net/xfrm/Kconfig > > > @@ -10,6 +10,7 @@ config XFRM > > > > > > config XFRM_OFFLOAD > > > bool > > > + select XFRM > > > > struct dst_entry depends on CONFIG_XFRM and not on CONFIG_XFRM_OFFLOAD, > > so it is unclear to me why do you need to add new "select XFRM" line. > > > > 26 struct dst_entry { > > 27 struct net_device *dev; > > 28 struct dst_ops *ops; > > 29 unsigned long _metrics; > > 30 unsigned long expires; > > 31 #ifdef CONFIG_XFRM > > 32 struct xfrm_state *xfrm; > > 33 #else > > 34 void *__pad1; > > 35 #endif > > 36 int > > > > Thanks
On Tue, Jul 25, 2023 at 8:19 AM Leon Romanovsky <leon@kernel.org> wrote: > > On Tue, Jul 25, 2023 at 07:41:49AM +0300, Ilia Lin wrote: > > Hi Leon, > > You was already asked do not top-post. > https://lore.kernel.org/netdev/20230718105446.GD8808@unreal/ > Please stop it. > > > > > This is exactly like I described: > > * xfrm.h is included from the net/core/sock.c unconditionally. > > * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is > > being compiled. > > * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. > > * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. > > I asked two questions. First one was "How did you set XFRM_OFFLOAD > without XFRM?". > > Thanks > In driver Kconfig: "select XFRM_OFFLOAD" > > > > > > > Thanks, > > Ilia Lin > > > > On Mon, Jul 24, 2023 at 9:11 PM Leon Romanovsky <leon@kernel.org> wrote: > > > > > > On Mon, Jul 24, 2023 at 12:00:44PM +0300, Ilia Lin wrote: > > > > If XFRM_OFFLOAD is configured, but XFRM is not > > > > > > How did you do it? > > > > > > >, it will cause > > > > compilation error on include xfrm.h: > > > > C 05:56:39 In file included from /src/linux/kernel_platform/msm-kernel/net/core/sock.c:127: > > > > C 05:56:39 /src/linux/kernel_platform/msm-kernel/include/net/xfrm.h:1932:30: error: no member named 'xfrm' in 'struct dst_entry' > > > > C 05:56:39 struct xfrm_state *x = dst->xfrm; > > > > C 05:56:39 ~~~ ^ > > > > > > > > Making the XFRM_OFFLOAD select the XFRM. > > > > > > > > Fixes: 48e01e001da31 ("ixgbe/ixgbevf: fix XFRM_ALGO dependency") > > > > Reported-by: Ilia Lin <ilia.lin@kernel.org> > > > > Signed-off-by: Ilia Lin <ilia.lin@kernel.org> > > > > --- > > > > net/xfrm/Kconfig | 1 + > > > > 1 file changed, 1 insertion(+) > > > > > > > > diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig > > > > index 3adf31a83a79a..3fc2c1bcb5bbe 100644 > > > > --- a/net/xfrm/Kconfig > > > > +++ b/net/xfrm/Kconfig > > > > @@ -10,6 +10,7 @@ config XFRM > > > > > > > > config XFRM_OFFLOAD > > > > bool > > > > + select XFRM > > > > > > struct dst_entry depends on CONFIG_XFRM and not on CONFIG_XFRM_OFFLOAD, > > > so it is unclear to me why do you need to add new "select XFRM" line. > > > > > > 26 struct dst_entry { > > > 27 struct net_device *dev; > > > 28 struct dst_ops *ops; > > > 29 unsigned long _metrics; > > > 30 unsigned long expires; > > > 31 #ifdef CONFIG_XFRM > > > 32 struct xfrm_state *xfrm; > > > 33 #else > > > 34 void *__pad1; > > > 35 #endif > > > 36 int > > > > > > Thanks
On Tue, Jul 25, 2023 at 12:11:06PM +0300, Ilia Lin wrote: > On Tue, Jul 25, 2023 at 8:19 AM Leon Romanovsky <leon@kernel.org> wrote: > > > > On Tue, Jul 25, 2023 at 07:41:49AM +0300, Ilia Lin wrote: > > > Hi Leon, > > > > You was already asked do not top-post. > > https://lore.kernel.org/netdev/20230718105446.GD8808@unreal/ > > Please stop it. > > > > > > > > This is exactly like I described: > > > * xfrm.h is included from the net/core/sock.c unconditionally. > > > * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is > > > being compiled. > > > * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. > > > * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. > > > > I asked two questions. First one was "How did you set XFRM_OFFLOAD > > without XFRM?". > > > > Thanks > > > In driver Kconfig: "select XFRM_OFFLOAD" In driver Kconfig, one should use "depends on XFRM_OFFLOAD" and not "select XFRM_OFFLOAD". Drivers shouldn't enable XFRM_OFFLOAD directly and all upstream users are safe here. Thanks
On Tue, Jul 25, 2023 at 12:38 PM Leon Romanovsky <leon@kernel.org> wrote: > > On Tue, Jul 25, 2023 at 12:11:06PM +0300, Ilia Lin wrote: > > On Tue, Jul 25, 2023 at 8:19 AM Leon Romanovsky <leon@kernel.org> wrote: > > > > > > On Tue, Jul 25, 2023 at 07:41:49AM +0300, Ilia Lin wrote: > > > > Hi Leon, > > > > > > You was already asked do not top-post. > > > https://lore.kernel.org/netdev/20230718105446.GD8808@unreal/ > > > Please stop it. > > > > > > > > > > > This is exactly like I described: > > > > * xfrm.h is included from the net/core/sock.c unconditionally. > > > > * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is > > > > being compiled. > > > > * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. > > > > * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. > > > > > > I asked two questions. First one was "How did you set XFRM_OFFLOAD > > > without XFRM?". > > > > > > Thanks > > > > > In driver Kconfig: "select XFRM_OFFLOAD" > > In driver Kconfig, one should use "depends on XFRM_OFFLOAD" and not "select XFRM_OFFLOAD". > Drivers shouldn't enable XFRM_OFFLOAD directly and all upstream users are safe here. Thank you for that information, but the XFRM_OFFLOAD doesn't depend on XFRM either. > > Thanks
On Tue, Jul 25, 2023 at 01:15:12PM +0300, Ilia Lin wrote: > On Tue, Jul 25, 2023 at 12:38 PM Leon Romanovsky <leon@kernel.org> wrote: > > > > On Tue, Jul 25, 2023 at 12:11:06PM +0300, Ilia Lin wrote: > > > On Tue, Jul 25, 2023 at 8:19 AM Leon Romanovsky <leon@kernel.org> wrote: > > > > > > > > On Tue, Jul 25, 2023 at 07:41:49AM +0300, Ilia Lin wrote: > > > > > Hi Leon, > > > > > > > > You was already asked do not top-post. > > > > https://lore.kernel.org/netdev/20230718105446.GD8808@unreal/ > > > > Please stop it. > > > > > > > > > > > > > > This is exactly like I described: > > > > > * xfrm.h is included from the net/core/sock.c unconditionally. > > > > > * If CONFIG_XFRM_OFFLOAD is set, then the xfrm_dst_offload_ok() is > > > > > being compiled. > > > > > * If CONFIG_XFRM is not set, the struct dst_entry doesn't have the xfrm member. > > > > > * xfrm_dst_offload_ok() tries to access the dst->xfrm and that fails to compile. > > > > > > > > I asked two questions. First one was "How did you set XFRM_OFFLOAD > > > > without XFRM?". > > > > > > > > Thanks > > > > > > > In driver Kconfig: "select XFRM_OFFLOAD" > > > > In driver Kconfig, one should use "depends on XFRM_OFFLOAD" and not "select XFRM_OFFLOAD". > > Drivers shouldn't enable XFRM_OFFLOAD directly and all upstream users are safe here. > > Thank you for that information, but the XFRM_OFFLOAD doesn't depend on > XFRM either. Indirectly, XFRM_OFFLOAD depends on XFRM. INET_ESP_OFFLOAD -> INET_ESP/XFRM_OFFLOAD -> XFRM_ESP -> XFRM_ALGO -> XFRM. Thanks > > > > > Thanks
diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig index 3adf31a83a79a..3fc2c1bcb5bbe 100644 --- a/net/xfrm/Kconfig +++ b/net/xfrm/Kconfig @@ -10,6 +10,7 @@ config XFRM config XFRM_OFFLOAD bool + select XFRM config XFRM_ALGO tristate
If XFRM_OFFLOAD is configured, but XFRM is not, it will cause compilation error on include xfrm.h: C 05:56:39 In file included from /src/linux/kernel_platform/msm-kernel/net/core/sock.c:127: C 05:56:39 /src/linux/kernel_platform/msm-kernel/include/net/xfrm.h:1932:30: error: no member named 'xfrm' in 'struct dst_entry' C 05:56:39 struct xfrm_state *x = dst->xfrm; C 05:56:39 ~~~ ^ Making the XFRM_OFFLOAD select the XFRM. Fixes: 48e01e001da31 ("ixgbe/ixgbevf: fix XFRM_ALGO dependency") Reported-by: Ilia Lin <ilia.lin@kernel.org> Signed-off-by: Ilia Lin <ilia.lin@kernel.org> --- net/xfrm/Kconfig | 1 + 1 file changed, 1 insertion(+) -- 2.25.1