[dpdk-dev] ethdev: Fix illegal access of rte_eth_dev_is_detachable()

Message ID 1438939286-19641-1-git-send-email-mukawa@igel.co.jp (mailing list archive)
State Accepted, archived
Headers

Commit Message

Tetsuya Mukawa Aug. 7, 2015, 9:21 a.m. UTC
  To obtain detachable flag, pci_drv is accessed in rte_eth_dev_is_detachable().
But pci_drv is only valid if port is enabled. Not to cause illegal access,
add rte_eth_dev_is_valid_port() before accessing.

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
---
 lib/librte_ether/rte_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Iremonger, Bernard Aug. 7, 2015, 10:38 a.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Tetsuya Mukawa
> Sent: Friday, August 7, 2015 10:21 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] ethdev: Fix illegal access of
> rte_eth_dev_is_detachable()
> 
> To obtain detachable flag, pci_drv is accessed in
> rte_eth_dev_is_detachable().
> But pci_drv is only valid if port is enabled. Not to cause illegal access, add
> rte_eth_dev_is_valid_port() before accessing.
> 
> Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>

Acked-by: Bernard Iremonger <Bernard.iremonger@intel.com>
  
Thomas Monjalon Aug. 9, 2015, 5:52 p.m. UTC | #2
> > To obtain detachable flag, pci_drv is accessed in
> > rte_eth_dev_is_detachable().
> > But pci_drv is only valid if port is enabled. Not to cause illegal access, add
> > rte_eth_dev_is_valid_port() before accessing.
> > 
> > Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
> 
> Acked-by: Bernard Iremonger <Bernard.iremonger@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 5fe1906..6b2400c 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -505,7 +505,7 @@  rte_eth_dev_is_detachable(uint8_t port_id)
 {
 	uint32_t drv_flags;
 
-	if (port_id >= RTE_MAX_ETHPORTS) {
+	if (!rte_eth_dev_is_valid_port(port_id)) {
 		PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
 		return -EINVAL;
 	}