[PATCH v1 for-rc] RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening server

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

 



Not setting ipv6 bit while destroying ipv6 listening servers may result in
potential fatal adapter errors due to lookup engine memory hash errors.
Therefore always set ipv6 field while destroying ipv6 listening servers.

Fixes: 830662f6f032 ("RDMA/cxgb4: Add support for active and passive open connection with IPv6 address")
Signed-off-by: Potnuri Bharat Teja <bharat@xxxxxxxxxxx>
---
Changes since v0:
- modified commit description to inform the severity of patch.
---
---
 drivers/infiniband/hw/cxgb4/cm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 8769e7aa097f..76faba892f00 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -3599,8 +3599,9 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog)
 
 int c4iw_destroy_listen(struct iw_cm_id *cm_id)
 {
-	int err;
 	struct c4iw_listen_ep *ep = to_listen_ep(cm_id);
+	bool ipv6 = false;
+	int err;
 
 	pr_debug("ep %p\n", ep);
 
@@ -3610,13 +3611,14 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id)
 	    ep->com.local_addr.ss_family == AF_INET) {
 		err = cxgb4_remove_server_filter(
 			ep->com.dev->rdev.lldi.ports[0], ep->stid,
-			ep->com.dev->rdev.lldi.rxq_ids[0], 0);
+			ep->com.dev->rdev.lldi.rxq_ids[0], ipv6);
 	} else {
 		struct sockaddr_in6 *sin6;
+		ipv6 = true;
 		c4iw_init_wr_wait(ep->com.wr_waitp);
 		err = cxgb4_remove_server(
 				ep->com.dev->rdev.lldi.ports[0], ep->stid,
-				ep->com.dev->rdev.lldi.rxq_ids[0], 0);
+				ep->com.dev->rdev.lldi.rxq_ids[0], ipv6);
 		if (err)
 			goto done;
 		err = c4iw_wait_for_reply(&ep->com.dev->rdev, ep->com.wr_waitp,
-- 
2.24.0




[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