[dpdk-stable] patch 'net/memif: fix abstract socket address length' has been queued to stable release 20.11.3

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue Aug 3 14:22:03 CEST 2021


Hi,

FYI, your patch has been queued to stable release 20.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 08/05/21. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/d43a754af8524be6720ca957b8b0ab2115c109a7

Thanks.

Luca Boccassi

---
>From d43a754af8524be6720ca957b8b0ab2115c109a7 Mon Sep 17 00:00:00 2001
From: Nathan Skrzypczak <nathan.skrzypczak at gmail.com>
Date: Fri, 23 Jul 2021 11:18:57 +0200
Subject: [PATCH] net/memif: fix abstract socket address length

[ upstream commit 4e30586dcdf09e670f2e3c6b58c919f6b887d431 ]

This fixes using abstract sockets with memifs.
We were not passing the exact addr_len,
which requires zeroing the remaining sun_path
and doesn't appear well in other utilities (e.g. lsof -U)

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak at gmail.com>
Reviewed-by: Jakub Grajciar <jgrajcia at cisco.com>
---
 drivers/net/memif/memif_socket.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/memif/memif_socket.c b/drivers/net/memif/memif_socket.c
index c526f90778..c3008f5ce1 100644
--- a/drivers/net/memif/memif_socket.c
+++ b/drivers/net/memif/memif_socket.c
@@ -866,6 +866,7 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract)
 {
 	struct memif_socket *sock;
 	struct sockaddr_un un = { 0 };
+	uint32_t sunlen;
 	int sockfd;
 	int ret;
 	int on = 1;
@@ -890,7 +891,11 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract)
 			/* abstract address */
 			un.sun_path[0] = '\0';
 			strlcpy(un.sun_path + 1, sock->filename, MEMIF_SOCKET_UN_SIZE - 1);
+			sunlen = RTE_MIN(1 + strlen(sock->filename),
+					 MEMIF_SOCKET_UN_SIZE) +
+				 sizeof(un) - sizeof(un.sun_path);
 		} else {
+			sunlen = sizeof(un);
 			strlcpy(un.sun_path, sock->filename, MEMIF_SOCKET_UN_SIZE);
 		}
 
@@ -899,7 +904,7 @@ memif_socket_create(char *key, uint8_t listener, bool is_abstract)
 		if (ret < 0)
 			goto error;
 
-		ret = bind(sockfd, (struct sockaddr *)&un, sizeof(un));
+		ret = bind(sockfd, (struct sockaddr *)&un, sunlen);
 		if (ret < 0)
 			goto error;
 
@@ -1061,6 +1066,7 @@ memif_connect_client(struct rte_eth_dev *dev)
 {
 	int sockfd;
 	int ret;
+	uint32_t sunlen;
 	struct sockaddr_un sun = { 0 };
 	struct pmd_internals *pmd = dev->data->dev_private;
 
@@ -1075,16 +1081,19 @@ memif_connect_client(struct rte_eth_dev *dev)
 	}
 
 	sun.sun_family = AF_UNIX;
+	sunlen = sizeof(struct sockaddr_un);
 	if (pmd->flags & ETH_MEMIF_FLAG_SOCKET_ABSTRACT) {
 		/* abstract address */
 		sun.sun_path[0] = '\0';
 		strlcpy(sun.sun_path + 1,  pmd->socket_filename, MEMIF_SOCKET_UN_SIZE - 1);
+		sunlen = RTE_MIN(strlen(pmd->socket_filename) + 1,
+				 MEMIF_SOCKET_UN_SIZE) +
+			 sizeof(sun) - sizeof(sun.sun_path);
 	} else {
 		strlcpy(sun.sun_path,  pmd->socket_filename, MEMIF_SOCKET_UN_SIZE);
 	}
 
-	ret = connect(sockfd, (struct sockaddr *)&sun,
-		      sizeof(struct sockaddr_un));
+	ret = connect(sockfd, (struct sockaddr *)&sun, sunlen);
 	if (ret < 0) {
 		MIF_LOG(ERR, "Failed to connect socket: %s.", pmd->socket_filename);
 		goto error;
-- 
2.30.2

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-08-03 12:35:08.806906678 +0100
+++ 0014-net-memif-fix-abstract-socket-address-length.patch	2021-08-03 12:35:08.234819128 +0100
@@ -1 +1 @@
-From 4e30586dcdf09e670f2e3c6b58c919f6b887d431 Mon Sep 17 00:00:00 2001
+From d43a754af8524be6720ca957b8b0ab2115c109a7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 4e30586dcdf09e670f2e3c6b58c919f6b887d431 ]
+
@@ -18 +20 @@
-index 5b373738e6..f58ff4c0cb 100644
+index c526f90778..c3008f5ce1 100644


More information about the stable mailing list