[dpdk-dev] [dpdk-stable] [PATCH] net/tap: ipc add check for number of messages received
Ferruh Yigit
ferruh.yigit at intel.com
Thu Apr 18 20:13:12 CEST 2019
On 4/18/2019 6:19 PM, Herakliusz Lipiec wrote:
> A sucessfull call to rte_mp_request_sync does not guarantee that there
> are valid messages in the buffer, and this should be checked for before
> accessing data in the message.
>
> Fixes: c9aa56edec8e ("net/tap: access primary process queues from secondary")
> Cc: rasland at mellanox.com
> Cc: stable at dpdk.org
> Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec at intel.com>
> ---
> 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 e9fda8cf6..a619a8850 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.n_receieved != 1) {
The API documentation says:
|| * @return
|| * - On success, return 0.
|| * - On failure, return -1, and the reason will be stored in rte_errno.
So if the API returns 0, why the reply is not valid, also if reply is not valid
how can you rely on a value in 'replies'
What do you think updating the 'rte_mp_request_sync()' API to return error
whenever the reply is not valid?
More information about the dev
mailing list