From: Fang TongHao <fangtonghao@sangfor.com.cn> To: thomas@monjalon.net, ferruh.yigit@intel.com, arybchenko@solarflare.com Cc: cunming.liang@intel.com, jia.guo@intel.com, dev@dpdk.org, stable@dpdk.org, Fang TongHao <fangtonghao@sangfor.com.cn> Subject: [dpdk-stable] [PATCH] ethdev: fix secondary process change share memory Date: Thu, 9 Jan 2020 20:27:10 +0800 Message-ID: <20200109122710.1362-1-fangtonghao@sangfor.com.cn> (raw) Hi all,I am from Sangfor Tech.I found a bug when using DPDK in multiprocess scenario.The secondary process enters "rte_eth_dev_pci_copy_info" function when initializing.Then it sets the value of struct "rte_eth_dev_data.dev_flags" to zero, but this struct is shared by primary process and secondary process, and the value change is unexpected by primary process. This may cause very serious damage.I think the secondary process should not enter "rte_eth_dev_pci_copy_info" function or changes the value of struct "rte_eth_dev_data.dev_flags" in shared memory. I fixed this bug by adding an if-statement to forbid the secondary process changing the above-mentioned value. Thansk, All. Signed-off-by: Fang TongHao <fangtonghao@sangfor.com.cn> --- lib/librte_ethdev/rte_ethdev_pci.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h index ccdbb46ec..916de8a14 100644 --- a/lib/librte_ethdev/rte_ethdev_pci.h +++ b/lib/librte_ethdev/rte_ethdev_pci.h @@ -59,15 +59,16 @@ rte_eth_copy_pci_info(struct rte_eth_dev *eth_dev, } eth_dev->intr_handle = &pci_dev->intr_handle; - - eth_dev->data->dev_flags = 0; - if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) - eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC; - if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_RMV) - eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_RMV; - - eth_dev->data->kdrv = pci_dev->kdrv; - eth_dev->data->numa_node = pci_dev->device.numa_node; + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + eth_dev->data->dev_flags = 0; + if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) + eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC; + if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_RMV) + eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_RMV; + + eth_dev->data->kdrv = pci_dev->kdrv; + eth_dev->data->numa_node = pci_dev->device.numa_node; + } } static inline int -- 2.24.1.windows.2
next reply other threads:[~2020-01-09 12:27 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-09 12:27 Fang TongHao [this message] 2020-01-10 7:30 ` Jeff Guo 2020-01-10 7:53 ` 方统浩50450 2020-01-13 5:03 ` [dpdk-stable] [PATCH v2] Fixes: ethdev: secondary process change shared memory Fang TongHao 2020-01-14 14:45 ` [dpdk-stable] [dpdk-dev] " Ferruh Yigit 2020-01-15 6:49 ` 方统浩50450 2020-01-15 18:35 ` Ferruh Yigit 2020-01-15 20:43 ` Thomas Monjalon 2020-01-16 7:43 ` Andrew Rybchenko 2020-01-16 9:04 ` Ferruh Yigit 2020-01-16 11:35 ` 方统浩50450 2020-01-16 12:18 ` Ferruh Yigit 2020-01-17 2:11 ` 方统浩50450 2020-01-16 9:00 ` Ferruh Yigit 2020-01-17 2:08 ` [dpdk-stable] [PATCH v3] " Fang TongHao 2020-01-17 8:33 ` Andrew Rybchenko 2020-01-17 17:58 ` [dpdk-stable] [dpdk-dev] " Ferruh Yigit -- strict thread matches above, loose matches on Subject: below -- 2020-01-09 3:14 [dpdk-stable] [PATCH] ethdev: fix secondary process change share memory Fang TongHao 2020-01-09 2:35 Fang TongHao
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200109122710.1362-1-fangtonghao@sangfor.com.cn \ --to=fangtonghao@sangfor.com.cn \ --cc=arybchenko@solarflare.com \ --cc=cunming.liang@intel.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=jia.guo@intel.com \ --cc=stable@dpdk.org \ --cc=thomas@monjalon.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
patches for DPDK stable branches This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \ stable@dpdk.org public-inbox-index stable Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.stable AGPL code for this site: git clone https://public-inbox.org/public-inbox.git