From: Stephen Hemminger Date: Fri, 18 Jul 2014 16:14:55 +0000 (-0700) Subject: igb_uio: add missing locking to config access X-Git-Tag: spdx-start~10516 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c631fcb494c6cdc019ccb671bf0a940e0896e3a8;p=dpdk.git igb_uio: add missing locking to config access Access to PCI config space should be inside pci_cfg_access_lock to avoid read/modify/write races. Signed-off-by: Stephen Hemminger Acked-by: Thomas Monjalon --- diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index bca412b19b..a94d998548 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -166,10 +166,13 @@ store_extended_tag(struct device *dev, else return -EINVAL; + pci_cfg_access_lock(pci_dev); pci_bus_read_config_dword(pci_dev->bus, pci_dev->devfn, PCI_DEV_CAP_REG, &val); - if (!(val & PCI_DEV_CAP_EXT_TAG_MASK)) /* Not supported */ + if (!(val & PCI_DEV_CAP_EXT_TAG_MASK)) { /* Not supported */ + pci_cfg_access_unlock(pci_dev); return -EPERM; + } val = 0; pci_bus_read_config_dword(pci_dev->bus, pci_dev->devfn, @@ -180,6 +183,7 @@ store_extended_tag(struct device *dev, val &= ~PCI_DEV_CTRL_EXT_TAG_MASK; pci_bus_write_config_dword(pci_dev->bus, pci_dev->devfn, PCI_DEV_CTRL_REG, val); + pci_cfg_access_unlock(pci_dev); return count; }