crypto/virtio: fix global variable multiple definitions

'virtio_hw_internal' global variable is defined in both 'crypto/virtio'
and 'net/virtio' PMDs. This means they share same storage when
application linked with static DPDK library, which is not the intention.

Fixing by adding 'crypto_' prefix to the 'crypto/virtio' driver.

Issue has been detected by '-fno-common' gcc flag.

Fixes: 25500d4b8076 ("crypto/virtio: support device init")
Cc: stable@dpdk.org

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
Ferruh Yigit 2019-09-05 15:53:11 +01:00 committed by David Marchand
parent 2ce24ee7ac
commit 2c44964461
2 changed files with 5 additions and 5 deletions

View File

@ -31,7 +31,7 @@
#define VIRTIO_PCI_CONFIG(hw) \
(((hw)->use_msix == VIRTIO_MSIX_ENABLED) ? 24 : 20)
struct virtio_hw_internal virtio_hw_internal[RTE_MAX_VIRTIO_CRYPTO];
struct virtio_hw_internal crypto_virtio_hw_internal[RTE_MAX_VIRTIO_CRYPTO];
static inline int
check_vq_phys_addr_ok(struct virtqueue *vq)
@ -452,7 +452,7 @@ vtpci_cryptodev_init(struct rte_pci_device *dev, struct virtio_crypto_hw *hw)
*/
if (virtio_read_caps(dev, hw) == 0) {
VIRTIO_CRYPTO_INIT_LOG_INFO("modern virtio pci detected.");
virtio_hw_internal[hw->dev_id].vtpci_ops =
crypto_virtio_hw_internal[hw->dev_id].vtpci_ops =
&virtio_crypto_modern_ops;
hw->modern = 1;
return 0;

View File

@ -201,10 +201,10 @@ struct virtio_hw_internal {
struct rte_pci_ioport io;
};
#define VTPCI_OPS(hw) (virtio_hw_internal[(hw)->dev_id].vtpci_ops)
#define VTPCI_IO(hw) (&virtio_hw_internal[(hw)->dev_id].io)
#define VTPCI_OPS(hw) (crypto_virtio_hw_internal[(hw)->dev_id].vtpci_ops)
#define VTPCI_IO(hw) (&crypto_virtio_hw_internal[(hw)->dev_id].io)
extern struct virtio_hw_internal virtio_hw_internal[RTE_MAX_VIRTIO_CRYPTO];
extern struct virtio_hw_internal crypto_virtio_hw_internal[RTE_MAX_VIRTIO_CRYPTO];
/*
* How many bits to shift physical queue address written to QUEUE_PFN.