Re: [PATCH 05/31] rdma/siw: make use of kernel_{bind,connect,listen}()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
Bernard Metzler, PhD
Tech. Leader High Performance I/O, Principal Research Staff
IBM Zurich Research Laboratory
Saeumerstrasse 4
CH-8803 Rueschlikon, Switzerland
+41 44 724 8605
 

-----"Stefan Metzmacher" <metze@xxxxxxxxx> wrote: -----

>To: "Bernard Metzler" <bmt@xxxxxxxxxxxxxx>
>From: "Stefan Metzmacher" <metze@xxxxxxxxx>
>Date: 05/07/2021 01:37AM
>Cc: linux-rdma@xxxxxxxxxxxxxxx, "Stefan Metzmacher" <metze@xxxxxxxxx>
>Subject: [EXTERNAL] [PATCH 05/31] rdma/siw: make use of
>kernel_{bind,connect,listen}()
>
>That's nicer than dereferencing socket structures.
>
>This prepares making rdma_connect()/siw_connect() non-blocking
>in order to avoid deadlocks in the callers.
>
>Fixes: 6c52fdc244b5 ("rdma/siw: connection management")
>Signed-off-by: Stefan Metzmacher <metze@xxxxxxxxx>
>Cc: Bernard Metzler <bmt@xxxxxxxxxxxxxx>
>Cc: linux-rdma@xxxxxxxxxxxxxxx
>---
> drivers/infiniband/sw/siw/siw_cm.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
>diff --git a/drivers/infiniband/sw/siw/siw_cm.c
>b/drivers/infiniband/sw/siw/siw_cm.c
>index 145ab6e4e0ed..e21cde84306e 100644
>--- a/drivers/infiniband/sw/siw/siw_cm.c
>+++ b/drivers/infiniband/sw/siw/siw_cm.c
>@@ -1319,11 +1319,11 @@ static int kernel_bindconnect(struct socket
>*s, struct sockaddr *laddr,
> 			return rv;
> 	}
> 
>-	rv = s->ops->bind(s, laddr, size);
>+	rv = kernel_bind(s, laddr, size);
> 	if (rv < 0)
> 		return rv;
> 
>-	rv = s->ops->connect(s, raddr, size, flags);
>+	rv = kernel_connect(s, raddr, size, flags);
> 
> 	return rv < 0 ? rv : 0;
> }
>@@ -1787,8 +1787,8 @@ int siw_create_listen(struct iw_cm_id *id, int
>backlog)
> 		if (ipv4_is_zeronet(laddr->sin_addr.s_addr))
> 			s->sk->sk_bound_dev_if = sdev->netdev->ifindex;
> 
>-		rv = s->ops->bind(s, (struct sockaddr *)laddr,
>-				  sizeof(struct sockaddr_in));
>+		rv = kernel_bind(s, (struct sockaddr *)laddr,
>+				 sizeof(struct sockaddr_in));
> 	} else {
> 		struct sockaddr_in6 *laddr = &to_sockaddr_in6(id->local_addr);
> 
>@@ -1805,8 +1805,8 @@ int siw_create_listen(struct iw_cm_id *id, int
>backlog)
> 		if (ipv6_addr_any(&laddr->sin6_addr))
> 			s->sk->sk_bound_dev_if = sdev->netdev->ifindex;
> 
>-		rv = s->ops->bind(s, (struct sockaddr *)laddr,
>-				  sizeof(struct sockaddr_in6));
>+		rv = kernel_bind(s, (struct sockaddr *)laddr,
>+				 sizeof(struct sockaddr_in6));
> 	}
> 	if (rv) {
> 		siw_dbg(id->device, "socket bind error: %d\n", rv);
>@@ -1826,7 +1826,7 @@ int siw_create_listen(struct iw_cm_id *id, int
>backlog)
> 			rv, backlog);
> 		goto error;
> 	}
>-	rv = s->ops->listen(s, backlog);
>+	rv = kernel_listen(s, backlog);
> 	if (rv) {
> 		siw_dbg(id->device, "listen error %d\n", rv);
> 		goto error;
>-- 
>2.25.1
>
>
Yes, thanks.

Reviewed-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx>





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux