On Tue, Jun 1, 2021 at 5:09 PM Kamal Heib <kamalheib1@xxxxxxxxx> wrote: > > On Tue, Jun 01, 2021 at 04:11:08PM +0800, Zhu Yanjun wrote: > > On Tue, Jun 1, 2021 at 3:56 PM kamal heib <kamalheib1@xxxxxxxxx> wrote: > > > > > > > > > > > > > On 1 Jun 2021, at 10:45, Zhu Yanjun <zyjzyj2000@xxxxxxxxx> wrote: > > > > > > > > On Tue, Jun 1, 2021 at 1:58 PM Kamal Heib <kamalheib1@xxxxxxxxx> wrote: > > > >> > > > >> To avoid the following failure when trying to load the rdma_rxe module > > > >> while IPv6 is disabled, Add a check to make sure that IPv6 is enabled > > > >> before trying to create the IPv6 UDP tunnel. > > > >> > > > >> $ modprobe rdma_rxe > > > >> modprobe: ERROR: could not insert 'rdma_rxe': Operation not permitted > > > > > > > > About this problem, this link: > > > > https://patchwork.kernel.org/project/linux-rdma/patch/20210413234252.12209-1-yanjun.zhu@xxxxxxxxx/ > > > > also tries to solve ipv6 problem. > > > > > > > > Zhu Yanjun > > > > > > > > > > Yes, but this patch is fixing the problem more cleanly and I’ve tested it. Please check this link https://lore.kernel.org/linux-rdma/20210326012723.41769-1-yanjun.zhu@xxxxxxxxx/T/ carefully. Please pay attention to the comments from Jason Gunthorpe Zhu Yanjun > > > > > > Could you please review and ACK this patch? > > > > https://www.spinics.net/lists/linux-rdma/msg100274.html > > Compared with the above commit, are the following also needed? > > > > I don't think so, because we aren't going to reach this function. > > Do you know about a real bug that fails in this function?! > > Thanks, > Kamal > > > diff --git a/drivers/infiniband/sw/rxe/rxe_net.c > > b/drivers/infiniband/sw/rxe/rxe_net.c > > index 0701bd1ffd1a..6ef092cb575e 100644 > > --- a/drivers/infiniband/sw/rxe/rxe_net.c > > +++ b/drivers/infiniband/sw/rxe/rxe_net.c > > @@ -72,6 +72,11 @@ static struct dst_entry *rxe_find_route6(struct > > net_device *ndev, > > struct dst_entry *ndst; > > struct flowi6 fl6 = { { 0 } }; > > > > + if (!ipv6_mod_enabled()) { > > + pr_info("IPv6 is disabled by ipv6.disable=1 in cmdline"); > > + return NULL; > > + } > > + > > memset(&fl6, 0, sizeof(fl6)); > > fl6.flowi6_oif = ndev->ifindex; > > memcpy(&fl6.saddr, saddr, sizeof(*saddr)); > > > > Zhu Yanjun > > > > > > > > Thanks, > > > Kamal > > > > > > > > > >> > > > >> Fixes: dfdd6158ca2c ("IB/rxe: Fix kernel panic in udp_setup_tunnel") > > > >> Signed-off-by: Kamal Heib <kamalheib1@xxxxxxxxx> > > > >> --- > > > >> drivers/infiniband/sw/rxe/rxe_net.c | 14 ++++++++------ > > > >> 1 file changed, 8 insertions(+), 6 deletions(-) > > > >> > > > >> diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c > > > >> index 01662727dca0..f353fc18769f 100644 > > > >> --- a/drivers/infiniband/sw/rxe/rxe_net.c > > > >> +++ b/drivers/infiniband/sw/rxe/rxe_net.c > > > >> @@ -617,12 +617,14 @@ static int rxe_net_ipv6_init(void) > > > >> { > > > >> #if IS_ENABLED(CONFIG_IPV6) > > > >> > > > >> - recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net, > > > >> - htons(ROCE_V2_UDP_DPORT), true); > > > >> - if (IS_ERR(recv_sockets.sk6)) { > > > >> - recv_sockets.sk6 = NULL; > > > >> - pr_err("Failed to create IPv6 UDP tunnel\n"); > > > >> - return -1; > > > >> + if (ipv6_mod_enabled()) { > > > >> + recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net, > > > >> + htons(ROCE_V2_UDP_DPORT), true); > > > >> + if (IS_ERR(recv_sockets.sk6)) { > > > >> + recv_sockets.sk6 = NULL; > > > >> + pr_err("Failed to create IPv6 UDP tunnel\n"); > > > >> + return -1; > > > >> + } > > > >> } > > > >> #endif > > > >> return 0; > > > >> -- > > > >> 2.26.3 > > > >>