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. > > > > 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 > > >>