From 7dccd4e02bcf6eff6480e6ddc8d066b38b3ffc89 Mon Sep 17 00:00:00 2001 From: Herakliusz Lipiec Date: Fri, 19 Apr 2019 11:28:52 +0100 Subject: [PATCH] net/tap: fix multi process reply buffer A successful call to rte_mp_request_sync does not guarantee that there are any messages in the buffer, and this should be checked for before accessing data in the message. Buffer can be empty if IPC is disabled or if we decide to ignore replies. Fixes: c9aa56edec8e ("net/tap: access primary process queues from secondary") Cc: stable@dpdk.org Signed-off-by: Herakliusz Lipiec Reviewed-by: Ferruh Yigit --- drivers/net/tap/rte_eth_tap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index e9fda8cf6a..7f74b5dc98 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -2101,7 +2101,7 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev) request.len_param = sizeof(*request_param); /* Send request and receive reply */ ret = rte_mp_request_sync(&request, &replies, &timeout); - if (ret < 0) { + if (ret < 0 || replies.nb_received != 1) { TAP_LOG(ERR, "Failed to request queues from primary: %d", rte_errno); return -1; -- 2.20.1