patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'ipc: fix memory leak on request failure' has been queued to LTS release 18.11.2
Date: Wed,  8 May 2019 17:02:06 +0100	[thread overview]
Message-ID: <20190508160233.2648-9-ktraynor@redhat.com> (raw)
In-Reply-To: <20190508160233.2648-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to LTS release 18.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/14/19. 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/kevintraynor/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable-queue/commit/ae62bad432359db3c5a499041d4c18cd0476a141

Thanks.

Kevin Traynor

---
From ae62bad432359db3c5a499041d4c18cd0476a141 Mon Sep 17 00:00:00 2001
From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Date: Thu, 25 Apr 2019 13:48:16 +0100
Subject: [PATCH] ipc: fix memory leak on request failure

[ upstream commit a2a06860b8c4cb4460044fa40c867fa2e908035d ]

When sending multiple requests, rte_mp_request_sync
can succeed sending a few of those requests, but then
fail on a later one and in the end return with rc=-1.
The upper layers - e.g. device hotplug - currently
handles this case as if no messages were sent and no
memory for response buffers was allocated, which is
not true. Fixed by always freeing memory buffers on
failure.

Bugzilla ID: 228
Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/eal_common_proc.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index b46d644b3..ef5eddbea 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -928,11 +928,11 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 	RTE_LOG(DEBUG, EAL, "request: %s\n", req->name);
 
-	if (check_input(req) == false)
-		return -1;
-
 	reply->nb_sent = 0;
 	reply->nb_received = 0;
 	reply->msgs = NULL;
 
+	if (check_input(req) == false)
+		goto err;
+
 	if (internal_config.no_shconf) {
 		RTE_LOG(DEBUG, EAL, "No shared files mode enabled, IPC is disabled\n");
@@ -943,5 +943,5 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 		RTE_LOG(ERR, EAL, "Failed to get current time\n");
 		rte_errno = errno;
-		return -1;
+		goto err;
 	}
 
@@ -955,4 +955,6 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 		ret = mp_request_sync(eal_mp_socket_path(), req, reply, &end);
 		pthread_mutex_unlock(&pending_requests.lock);
+		if (ret)
+			goto err;
 		return ret;
 	}
@@ -963,5 +965,5 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 		RTE_LOG(ERR, EAL, "Unable to open directory %s\n", mp_dir_path);
 		rte_errno = errno;
-		return -1;
+		goto err;
 	}
 
@@ -973,5 +975,5 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 		closedir(mp_dir);
 		rte_errno = errno;
-		return -1;
+		goto err;
 	}
 
@@ -990,5 +992,5 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 		 */
 		if (mp_request_sync(path, req, reply, &end))
-			ret = -1;
+			goto err;
 	}
 	pthread_mutex_unlock(&pending_requests.lock);
@@ -999,4 +1001,10 @@ rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,
 	closedir(mp_dir);
 	return ret;
+
+err:
+	free(reply->msgs);
+	reply->nb_received = 0;
+	reply->msgs = NULL;
+	return -1;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-05-08 16:33:57.953289339 +0100
+++ 0009-ipc-fix-memory-leak-on-request-failure.patch	2019-05-08 16:33:57.362579749 +0100
@@ -1 +1 @@
-From a2a06860b8c4cb4460044fa40c867fa2e908035d Mon Sep 17 00:00:00 2001
+From ae62bad432359db3c5a499041d4c18cd0476a141 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit a2a06860b8c4cb4460044fa40c867fa2e908035d ]
+
@@ -17 +18,0 @@
-Cc: stable@dpdk.org

  parent reply	other threads:[~2019-05-08 16:02 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-08 16:01 [dpdk-stable] patch 'raw/dpaa2_qdma: fix spin lock release' " Kevin Traynor
2019-05-08 16:01 ` [dpdk-stable] patch 'raw/ifpga: fix file descriptor leak in error path' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix spelling reported by aspell in guides' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix spelling reported by aspell in comments' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/multi_process: fix buffer underrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/power: fix buffer overrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'examples/power: fix json null termination' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'eal: fix formatting of hotplug error message' " Kevin Traynor
2019-05-08 16:02 ` Kevin Traynor [this message]
2019-05-08 16:02 ` [dpdk-stable] patch 'net/tap: fix memory leak on IPC request' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: fix send error handling' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: harden message receive' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'ipc: handle more invalid parameter cases' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'event/dsw: fix capability flags' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: fix comments mixing Rx and Tx' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix interactive commands in testpmd guide' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'app/testpmd: fix help info for interactive commands' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: fix coding style' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: avoid hard-coded length' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: use calloc style where appropriate' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: check length of ring name' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/ring: fix return value check' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/kni: " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'app/testpmd: fix unintentional integer overflow' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/i40e: fix queue number check' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'test/bonding: fix MAC assignment for re-run' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/i40e: fix link speed for X722' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: check Tx queue size overflow' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/mlx5: fix max number of queues for NEON Tx' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/tap: fix potential IPC buffer overrun' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/vmxnet3: add VLAN filter capability' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'net/netvsc: reset mbuf port on VF Rx' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'test: clean remaining trace of devargs autotest' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'eventdev: update references to removed function' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'hash: fix doc about thread/process safety' " Kevin Traynor
2019-05-08 16:02 ` [dpdk-stable] patch 'doc: fix broken link in LPM guide' " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190508160233.2648-9-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=herakliusz.lipiec@intel.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).