diff mbox series

[PATCHv3,for-next,1/1] RDMA/rxe: Disable ipv6 features when ipv6.disable set in cmdline

Message ID 20210326012723.41769-1-yanjun.zhu@intel.com (mailing list archive)
State Superseded
Headers show
Series [PATCHv3,for-next,1/1] RDMA/rxe: Disable ipv6 features when ipv6.disable set in cmdline | expand

Commit Message

Zhu Yanjun March 26, 2021, 1:27 a.m. UTC
From: Zhu Yanjun <zyjzyj2000@gmail.com>

When ipv6.disable=1 is set in cmdline, ipv6 is actually disabled
in the stack. As such, the operations of ipv6 in RXE will fail.
So ipv6 features in RXE should also be disabled in RXE.

Fixes: 8700e3e7c4857 ("Soft RoCE driver")
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Tested-by: Yi Zhang <yi.zhang@redhat.com>
---
V2->V3: Remove print message
V1->V2: Modify the pr_info messages
---
---
 drivers/infiniband/sw/rxe/rxe_net.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jason Gunthorpe April 8, 2021, 6:33 p.m. UTC | #1
On Thu, Mar 25, 2021 at 09:27:23PM -0400, Zhu Yanjun wrote:
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
> 
> When ipv6.disable=1 is set in cmdline, ipv6 is actually disabled
> in the stack. As such, the operations of ipv6 in RXE will fail.
> So ipv6 features in RXE should also be disabled in RXE.
> 
> Fixes: 8700e3e7c4857 ("Soft RoCE driver")
> Reported-by: Yi Zhang <yi.zhang@redhat.com>
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
> Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
> Tested-by: Yi Zhang <yi.zhang@redhat.com>
> V2->V3: Remove print message
> V1->V2: Modify the pr_info messages
>  drivers/infiniband/sw/rxe/rxe_net.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
> index 01662727dca0..3b8ed007e8af 100644
> +++ b/drivers/infiniband/sw/rxe/rxe_net.c
> @@ -72,6 +72,9 @@ static struct dst_entry *rxe_find_route6(struct net_device *ndev,
>  	struct dst_entry *ndst;
>  	struct flowi6 fl6 = { { 0 } };
>  
> +	if (!ipv6_mod_enabled())
> +		return NULL;
> +
>  	memset(&fl6, 0, sizeof(fl6));
>  	fl6.flowi6_oif = ndev->ifindex;
>  	memcpy(&fl6.saddr, saddr, sizeof(*saddr));

What is this actually fixing?

ndst = ipv6_stub->ipv6_dst_lookup_flow() will return an error if the
ipv6 support is not loaded so why do we need more tests?

> @@ -616,6 +619,8 @@ static int rxe_net_ipv4_init(void)
>  static int rxe_net_ipv6_init(void)
>  {
>  #if IS_ENABLED(CONFIG_IPV6)
> +	if (!ipv6_mod_enabled())
> +		return 0;
>  
>  	recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net,
>  						htons(ROCE_V2_UDP_DPORT), true);

rxe_setup_udp_tunnel() should already fail naturally because the V6
socket won't be created

What is the actual symptom this patch is trying to address?

Jason
Jason Gunthorpe April 9, 2021, 1:37 p.m. UTC | #2
On Fri, Apr 09, 2021 at 10:36:42PM -0400, Zhu Yanjun wrote:

> > What is the actual symptom this patch is trying to address?
> 
> This patch is try to fix the problem in the link
> https://lore.kernel.org/linux-rdma/880d7b59-4b17-a44f-1a91-88257bfc3aaa@redhat.com/T/#t

you should ignore the -97 return code when creating the UDP v6 socket

Jason
Zhu Yanjun April 10, 2021, 2:36 a.m. UTC | #3
On Thu, Apr 8, 2021 at 2:34 PM Jason Gunthorpe <jgg@nvidia.com> wrote:
>
> On Thu, Mar 25, 2021 at 09:27:23PM -0400, Zhu Yanjun wrote:
> > From: Zhu Yanjun <zyjzyj2000@gmail.com>
> >
> > When ipv6.disable=1 is set in cmdline, ipv6 is actually disabled
> > in the stack. As such, the operations of ipv6 in RXE will fail.
> > So ipv6 features in RXE should also be disabled in RXE.
> >
> > Fixes: 8700e3e7c4857 ("Soft RoCE driver")
> > Reported-by: Yi Zhang <yi.zhang@redhat.com>
> > Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
> > Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
> > Tested-by: Yi Zhang <yi.zhang@redhat.com>
> > V2->V3: Remove print message
> > V1->V2: Modify the pr_info messages
> >  drivers/infiniband/sw/rxe/rxe_net.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
> > index 01662727dca0..3b8ed007e8af 100644
> > +++ b/drivers/infiniband/sw/rxe/rxe_net.c
> > @@ -72,6 +72,9 @@ static struct dst_entry *rxe_find_route6(struct net_device *ndev,
> >       struct dst_entry *ndst;
> >       struct flowi6 fl6 = { { 0 } };
> >
> > +     if (!ipv6_mod_enabled())
> > +             return NULL;
> > +
> >       memset(&fl6, 0, sizeof(fl6));
> >       fl6.flowi6_oif = ndev->ifindex;
> >       memcpy(&fl6.saddr, saddr, sizeof(*saddr));
>
> What is this actually fixing?
>
> ndst = ipv6_stub->ipv6_dst_lookup_flow() will return an error if the
> ipv6 support is not loaded so why do we need more tests?

As what I said in commit log, when "When ipv6.disable=1 is set in
cmdline, ipv6 is actually disabled"
That is, when cat /proc/cmdline, the command line is
"
cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.12.0-rc3+ root=/dev/mapper/cl-root
ro resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap
crashkernel=512M ipv6.disable=1
"
And if you make the above configurations, then modprobe rdma_rxe should work.
then ''rdma link add rxe0 type rxe netdev eth0" should work well.
ndst = ipv6_stub->ipv6_dst_lookup_flow should not be called.
Can you tell me how to disable IPV6 in your test host?

> in the stack. As such, the operations of ipv6 in RXE will fail.
> So ipv6 features in RXE should also be disabled in RXE."

>
> > @@ -616,6 +619,8 @@ static int rxe_net_ipv4_init(void)
> >  static int rxe_net_ipv6_init(void)
> >  {
> >  #if IS_ENABLED(CONFIG_IPV6)
> > +     if (!ipv6_mod_enabled())
> > +             return 0;
> >
> >       recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net,
> >                                               htons(ROCE_V2_UDP_DPORT), true);
>
> rxe_setup_udp_tunnel() should already fail naturally because the V6
> socket won't be created
>
> What is the actual symptom this patch is trying to address?

This patch is try to fix the problem in the link
https://lore.kernel.org/linux-rdma/880d7b59-4b17-a44f-1a91-88257bfc3aaa@redhat.com/T/#t

Zhu Yanjun

>
> Jason
Zhu Yanjun April 12, 2021, 6:34 a.m. UTC | #4
On Fri, Apr 9, 2021 at 9:37 AM Jason Gunthorpe <jgg@nvidia.com> wrote:
>
> On Fri, Apr 09, 2021 at 10:36:42PM -0400, Zhu Yanjun wrote:
>
> > > What is the actual symptom this patch is trying to address?
> >
> > This patch is try to fix the problem in the link
> > https://lore.kernel.org/linux-rdma/880d7b59-4b17-a44f-1a91-88257bfc3aaa@redhat.com/T/#t
>
> you should ignore the -97 return code when creating the UDP v6 socket

Got it. I will send V4 for this IPv6 problem.

Zhu Yanjun

>
> Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
index 01662727dca0..3b8ed007e8af 100644
--- a/drivers/infiniband/sw/rxe/rxe_net.c
+++ b/drivers/infiniband/sw/rxe/rxe_net.c
@@ -72,6 +72,9 @@  static struct dst_entry *rxe_find_route6(struct net_device *ndev,
 	struct dst_entry *ndst;
 	struct flowi6 fl6 = { { 0 } };
 
+	if (!ipv6_mod_enabled())
+		return NULL;
+
 	memset(&fl6, 0, sizeof(fl6));
 	fl6.flowi6_oif = ndev->ifindex;
 	memcpy(&fl6.saddr, saddr, sizeof(*saddr));
@@ -616,6 +619,8 @@  static int rxe_net_ipv4_init(void)
 static int rxe_net_ipv6_init(void)
 {
 #if IS_ENABLED(CONFIG_IPV6)
+	if (!ipv6_mod_enabled())
+		return 0;
 
 	recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net,
 						htons(ROCE_V2_UDP_DPORT), true);