From: Herakliusz Lipiec Date: Fri, 19 Apr 2019 10:28:52 +0000 (+0100) Subject: net/tap: fix multi process reply buffer X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=7dccd4e02bcf6eff6480e6ddc8d066b38b3ffc89;p=dpdk.git 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 --- 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;