diff mbox series

[for-rc,v1] RDMA/rxe: Fix failure during driver load

Message ID 20210603090112.36341-1-kamalheib1@gmail.com (mailing list archive)
State Accepted
Delegated to: Jason Gunthorpe
Headers show
Series [for-rc,v1] RDMA/rxe: Fix failure during driver load | expand

Commit Message

Kamal Heib June 3, 2021, 9:01 a.m. UTC
To avoid the following failure when trying to load the rdma_rxe module
while IPv6 is disabled, add a check for EAFNOSUPPORT to ignore the
failure, also delete the needless debug print from rxe_setup_udp_tunnel().

$ modprobe rdma_rxe
modprobe: ERROR: could not insert 'rdma_rxe': Operation not permitted

Fixes: dfdd6158ca2c ("IB/rxe: Fix kernel panic in udp_setup_tunnel")
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/sw/rxe/rxe_net.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Zhu Yanjun June 3, 2021, 9:51 a.m. UTC | #1
June 3, 2021 5:01 PM, "Kamal Heib" <kamalheib1@gmail.com> wrote:

> To avoid the following failure when trying to load the rdma_rxe module
> while IPv6 is disabled, add a check for EAFNOSUPPORT to ignore the
> failure, also delete the needless debug print from rxe_setup_udp_tunnel().
> 
> $ modprobe rdma_rxe
> modprobe: ERROR: could not insert 'rdma_rxe': Operation not permitted
> 
> Fixes: dfdd6158ca2c ("IB/rxe: Fix kernel panic in udp_setup_tunnel")
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
> drivers/infiniband/sw/rxe/rxe_net.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
> index 01662727dca0..6cb4446a0bdb 100644
> --- a/drivers/infiniband/sw/rxe/rxe_net.c
> +++ b/drivers/infiniband/sw/rxe/rxe_net.c
> @@ -207,10 +207,8 @@ static struct socket *rxe_setup_udp_tunnel(struct net *net, __be16 port,
> 
> /* Create UDP socket */
> err = udp_sock_create(net, &udp_cfg, &sock);
> - if (err < 0) {
> - pr_err("failed to create udp socket. err = %d\n", err);
> + if (err < 0)
> return ERR_PTR(err);
> - }
> 
> tnl_cfg.encap_type = 1;
> tnl_cfg.encap_rcv = rxe_udp_encap_recv;
> @@ -619,6 +617,12 @@ static int rxe_net_ipv6_init(void)
> 
> recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net,
> htons(ROCE_V2_UDP_DPORT), true);
> + if (PTR_ERR(recv_sockets.sk6) == -EAFNOSUPPORT) {
> + recv_sockets.sk6 = NULL;
> + pr_warn("IPv6 is not supported can not create UDP socket\n");

This warning doesn't read smoothly.

Zhu Yanjun

> + return 0;
> + }
> +
> if (IS_ERR(recv_sockets.sk6)) {
> recv_sockets.sk6 = NULL;
> pr_err("Failed to create IPv6 UDP tunnel\n");
> -- 
> 2.26.3
Jason Gunthorpe June 3, 2021, 7:51 p.m. UTC | #2
On Thu, Jun 03, 2021 at 12:01:12PM +0300, Kamal Heib wrote:
> To avoid the following failure when trying to load the rdma_rxe module
> while IPv6 is disabled, add a check for EAFNOSUPPORT to ignore the
> failure, also delete the needless debug print from rxe_setup_udp_tunnel().
> 
> $ modprobe rdma_rxe
> modprobe: ERROR: could not insert 'rdma_rxe': Operation not permitted
> 
> Fixes: dfdd6158ca2c ("IB/rxe: Fix kernel panic in udp_setup_tunnel")
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> --
>  drivers/infiniband/sw/rxe/rxe_net.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)

I tidied the pr_warn english and put this to for-next

It has been broken for so long, and in such a small way, I can't see
this as a -rc fix.

Thanks,
Jason
Kamal Heib June 6, 2021, 7:13 a.m. UTC | #3
On Thu, Jun 03, 2021 at 04:51:45PM -0300, Jason Gunthorpe wrote:
> On Thu, Jun 03, 2021 at 12:01:12PM +0300, Kamal Heib wrote:
> > To avoid the following failure when trying to load the rdma_rxe module
> > while IPv6 is disabled, add a check for EAFNOSUPPORT to ignore the
> > failure, also delete the needless debug print from rxe_setup_udp_tunnel().
> > 
> > $ modprobe rdma_rxe
> > modprobe: ERROR: could not insert 'rdma_rxe': Operation not permitted
> > 
> > Fixes: dfdd6158ca2c ("IB/rxe: Fix kernel panic in udp_setup_tunnel")
> > Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> > --
> >  drivers/infiniband/sw/rxe/rxe_net.c | 10 +++++++---
> >  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> I tidied the pr_warn english and put this to for-next
> 
> It has been broken for so long, and in such a small way, I can't see
> this as a -rc fix.
> 
> Thanks,
> Jason

Thanks a lot Jason.

Could you please add the reported-by tag to this patch? - I've missed
it, Sorry :-(.

Reported-by: Yi Zhang <yi.zhang@redhat.com>

Thanks,
Kamal
diff mbox series

Patch

diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
index 01662727dca0..6cb4446a0bdb 100644
--- a/drivers/infiniband/sw/rxe/rxe_net.c
+++ b/drivers/infiniband/sw/rxe/rxe_net.c
@@ -207,10 +207,8 @@  static struct socket *rxe_setup_udp_tunnel(struct net *net, __be16 port,
 
 	/* Create UDP socket */
 	err = udp_sock_create(net, &udp_cfg, &sock);
-	if (err < 0) {
-		pr_err("failed to create udp socket. err = %d\n", err);
+	if (err < 0)
 		return ERR_PTR(err);
-	}
 
 	tnl_cfg.encap_type = 1;
 	tnl_cfg.encap_rcv = rxe_udp_encap_recv;
@@ -619,6 +617,12 @@  static int rxe_net_ipv6_init(void)
 
 	recv_sockets.sk6 = rxe_setup_udp_tunnel(&init_net,
 						htons(ROCE_V2_UDP_DPORT), true);
+	if (PTR_ERR(recv_sockets.sk6) == -EAFNOSUPPORT) {
+		recv_sockets.sk6 = NULL;
+		pr_warn("IPv6 is not supported can not create UDP socket\n");
+		return 0;
+	}
+
 	if (IS_ERR(recv_sockets.sk6)) {
 		recv_sockets.sk6 = NULL;
 		pr_err("Failed to create IPv6 UDP tunnel\n");