ethdev: add a check on mempool during rxq setup

Message ID 1558080908-25951-1-git-send-email-david.marchand@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series ethdev: add a check on mempool during rxq setup |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS

Commit Message

David Marchand May 17, 2019, 8:15 a.m. UTC
  We currently have no check on the mempool pointer passed to
rte_eth_rx_queue_setup.
Let's avoid a plain crash when dereferencing it.

Suggested-by: Jens Freimann <jfreimann@redhat.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_ethdev/rte_ethdev.c | 5 +++++
 lib/librte_ethdev/rte_ethdev.h | 6 +++---
 2 files changed, 8 insertions(+), 3 deletions(-)
  

Comments

Jens Freimann May 17, 2019, 11:11 a.m. UTC | #1
On Fri, May 17, 2019 at 10:15:08AM +0200, David Marchand wrote:
>We currently have no check on the mempool pointer passed to
>rte_eth_rx_queue_setup.
>Let's avoid a plain crash when dereferencing it.
>
>Suggested-by: Jens Freimann <jfreimann@redhat.com>
>Signed-off-by: David Marchand <david.marchand@redhat.com>
>---
> lib/librte_ethdev/rte_ethdev.c | 5 +++++
> lib/librte_ethdev/rte_ethdev.h | 6 +++---
> 2 files changed, 8 insertions(+), 3 deletions(-)
>

Thanks David!

Reviewed-by: Jens Freimann <jfreimann@redhat.com>
  
Andrew Rybchenko June 5, 2019, 4:46 p.m. UTC | #2
On 5/17/19 11:15 AM, David Marchand wrote:
> We currently have no check on the mempool pointer passed to
> rte_eth_rx_queue_setup.
> Let's avoid a plain crash when dereferencing it.
>
> Suggested-by: Jens Freimann <jfreimann@redhat.com>
> Signed-off-by: David Marchand <david.marchand@redhat.com>

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
  
Ferruh Yigit June 6, 2019, 3:06 p.m. UTC | #3
On 6/5/2019 5:46 PM, Andrew Rybchenko wrote:
> On 5/17/19 11:15 AM, David Marchand wrote:
>> We currently have no check on the mempool pointer passed to
>> rte_eth_rx_queue_setup.
>> Let's avoid a plain crash when dereferencing it.
>>
>> Suggested-by: Jens Freimann <jfreimann@redhat.com>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
> 
> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
> 

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index d7cfa3d..76453fe 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -1579,6 +1579,11 @@  struct rte_eth_dev *
 		return -EINVAL;
 	}
 
+	if (mp == NULL) {
+		RTE_ETHDEV_LOG(ERR, "Invalid null mempool pointer\n");
+		return -EINVAL;
+	}
+
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP);
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_setup, -ENOTSUP);
 
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 80e371b..d7b2657 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -1745,9 +1745,9 @@  int rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_queue,
  * @return
  *   - 0: Success, receive queue correctly set up.
  *   - -EIO: if device is removed.
- *   - -EINVAL: The size of network buffers which can be allocated from the
- *      memory pool does not fit the various buffer sizes allowed by the
- *      device controller.
+ *   - -EINVAL: The memory pool pointer is null or the size of network buffers
+ *      which can be allocated from this memory pool does not fit the various
+ *      buffer sizes allowed by the device controller.
  *   - -ENOMEM: Unable to allocate the receive ring descriptors or to
  *      allocate network memory buffers from the memory pool when
  *      initializing receive descriptors.