From e8b081e20db4aa78f9559ffca9dcefd41ef66e63 Mon Sep 17 00:00:00 2001 From: Kevin Traynor Date: Wed, 6 Nov 2019 19:01:56 +0000 Subject: [PATCH] net/pcap: fix argument checks Previously rx/tx_queues were passed into eth_from_pcaps_common() as ptrs and were checked for being NULL. In commit da6ba28f0540 ("net/pcap: use a struct to pass user options") that changed to pass in a ptr to a pmd_devargs_all which contains the rx/tx_queues. The parameter checking was not updated as part of that commit and coverity caught that there was still a check if rx/tx_queues were NULL, apparently after they had been dereferenced. In fact as they are a members of the devargs_all struct, they will not be NULL so remove those checks. 1231 struct pmd_devargs *rx_queues = &devargs_all->rx_queues; 1232 struct pmd_devargs *tx_queues = &devargs_all->tx_queues; 1233 const unsigned int nb_rx_queues = rx_queues->num_of_queue; deref_ptr: Directly dereferencing pointer tx_queues. 1234 const unsigned int nb_tx_queues = tx_queues->num_of_queue; 1235 unsigned int i; 1236 1237 /* do some parameter checking */ CID 345004: Dereference before null check (REVERSE_INULL) [select issue] 1238 if (rx_queues == NULL && nb_rx_queues > 0) 1239 return -1; CID 345029 (#1 of 1): Dereference before null check (REVERSE_INULL) check_after_deref: Null-checking tx_queues suggests that it may be null, but it has already been dereferenced on all paths leading to the check. 1240 if (tx_queues == NULL && nb_tx_queues > 0) 1241 return -1; Coverity issue: 345029 Coverity issue: 345044 Fixes: da6ba28f0540 ("net/pcap: use a struct to pass user options") Cc: stable@dpdk.org Signed-off-by: Kevin Traynor Acked-by: Cian Ferriter --- drivers/net/pcap/rte_eth_pcap.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 5186d8fe5c..aa7ef6fdbc 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -1240,12 +1240,6 @@ eth_from_pcaps_common(struct rte_vdev_device *vdev, const unsigned int nb_tx_queues = tx_queues->num_of_queue; unsigned int i; - /* do some parameter checking */ - if (rx_queues == NULL && nb_rx_queues > 0) - return -1; - if (tx_queues == NULL && nb_tx_queues > 0) - return -1; - if (pmd_init_internals(vdev, nb_rx_queues, nb_tx_queues, internals, eth_dev) < 0) return -1; -- 2.20.1