From e14bc93e8f231455ac7ffb45189f8dedcc45276d Mon Sep 17 00:00:00 2001 From: Gao Feng Date: Wed, 5 Dec 2018 10:50:25 +0800 Subject: [PATCH] eal: fix leak on multi-process request error When rte_eal_alarm_set failed, need to free the bundle mem in the error handler of handle_primary_request and handle_secondary_request. Fixes: 244d5130719c ("eal: enable hotplug on multi-process") Fixes: ac9e4a17370f ("eal: support attach/detach shared device from secondary") Cc: stable@dpdk.org Signed-off-by: Gao Feng Acked-by: Anatoly Burakov --- lib/librte_eal/common/hotplug_mp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/librte_eal/common/hotplug_mp.c b/lib/librte_eal/common/hotplug_mp.c index 070e2e0c27..9d610a8a20 100644 --- a/lib/librte_eal/common/hotplug_mp.c +++ b/lib/librte_eal/common/hotplug_mp.c @@ -208,6 +208,8 @@ handle_secondary_request(const struct rte_mp_msg *msg, const void *peer) ret = rte_eal_alarm_set(1, __handle_secondary_request, bundle); if (ret != 0) { RTE_LOG(ERR, EAL, "failed to add mp task\n"); + free(bundle->peer); + free(bundle); return send_response_to_secondary(req, ret, peer); } return 0; @@ -332,6 +334,8 @@ handle_primary_request(const struct rte_mp_msg *msg, const void *peer) */ ret = rte_eal_alarm_set(1, __handle_primary_request, bundle); if (ret != 0) { + free(bundle->peer); + free(bundle); resp->result = ret; ret = rte_mp_reply(&mp_resp, peer); if (ret != 0) { -- 2.20.1