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 reply message buffers.

Fixes: 660098d61f57 ("pdump: use generic multi-process channel")
Cc: jianfeng....@intel.com
Cc: sta...@dpdk.org
Signed-off-by: Herakliusz Lipiec <herakliusz.lip...@intel.com>
---
 lib/librte_pdump/rte_pdump.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c
index 14744b9ff..3787c3e32 100644
--- a/lib/librte_pdump/rte_pdump.c
+++ b/lib/librte_pdump/rte_pdump.c
@@ -525,8 +525,8 @@ pdump_prepare_client_request(char *device, uint16_t queue,
                rte_errno = resp->err_value;
                if (!resp->err_value)
                        ret = 0;
-               free(mp_reply.msgs);
        }
+       free(mp_reply.msgs);
 
        if (ret < 0)
                RTE_LOG(ERR, PDUMP,
-- 
2.17.2

Reply via email to